调和小区株树的计算

计算家系平均遗传力时,如果数据不平衡(小区株树不一致)需要用到调和小区株树(nk)。

  • 单点
    \hat{h}_{f}^{2}=\frac{\hat{\sigma}_{a}^{2}}{\hat{\sigma}_{f}^{2}+\hat{\sigma}_{f b}^{2} / n_{b}+\hat{\sigma}_{e}^{2} /\left(n_{b}n_{k}\right)}
  • 多点
    \hat{h}_{f}^{2}=\frac{\hat{\sigma}_{a}^{2}}{\hat{\sigma}_{f}^{2}+\hat{\sigma}_{sf }^{2} / n_{s}+\hat{\sigma}_{f b}^{2} / (n_{s}n_{b})+\hat{\sigma}_{e}^{2} /\left(n_{s}n_{b}n_{k}\right)}

nk的计算在黄少伟的论文中(黄少伟; 钟伟华 用小区平均值估算单株遗传力的方法. 华南农业大学学报 1998, 19, 76–81.)有介绍,计算公式为:

调和小区株树.png

关键点是得到具体方法每个小区的株树,加起来然后用地点数、区组数和家系数的积除一下即可得。

  • SPSS
    用general linear model中的univariate分析,响应变量选择一个最好没有缺失值的变量,单点时自变量选择family和block,多点则把site也选上。当然我们并不真的要做回归或ANOVA,所以要在options中勾选描述性统计,这个才是我们需要的。出来的结果是这样的:

output.png

我们需要最右列N,复制到Excel中,注意把所有Total的行去掉,按照公式计算就可以了。

  • R
n_s=2; n_r=5; n_f <- length(levels(df$Fam))
df_freq <- table(df$Fam, df$Rep) %>% as.data.frame() %>% filter(Freq!=0) 
n_p <- n_r*n_f/sum(1/df_freq$Freq)


harm_plot <- function(Fam, Rep) {
  n_f <- length(levels(Fam))
  n_r <- length(levels(Rep))
  df_freq <- table(Fam, Rep) %>% as.data.frame() %>% filter(Freq!=0) 
  n_p <- n_r*n_f/sum(1/df_freq$Freq)
  return(n_p)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容