美文网首页R
使用R语言计算遗传力

使用R语言计算遗传力

作者: 生信小王子 | 来源:发表于2020-02-08 20:31 被阅读0次

    欢迎关注微信公众号"生信小王子"!

    遗传力 (Heritability) 又称遗传率,指遗传方差在总方差(表型方差)中所占的比值。遗传力表明某一性状受到遗传控制的程度。它介于0到1之间,当遗传力为1时,表型变异完全由遗传因素决定,当遗传力为0时表型变异由环境因素决定。

    我们可以使用R包" lme4 "来计算遗传力。

    ## 安装R包

    install.packages("lme4")

    ## 加载R包

    library("lme4")

    根据表型数据的收集方式,我们可以将数据分为多点无重复数据、多点有重复数据和多年多点有重复数据。每种类型数据计算遗传力的方法有细微差别,需要分情况对待。

    多点无重复数据

    多点无重复数据输入文件格式如下:

    每列代表样本名,种植地点和表型值。保存为制表符分隔的txt文件。

    ## 导入表型数据

    phe <- read.table("phe.txt", header =T, sep="\t")

    trait <- phe$Trait

    line <- phe$Line

    loc <- phe$Loc

    TRAIT <- as.numeric(trait)

    LINE <- as.factor(line)

    LOC <- as.factor(loc)

    ## 建模

    blup <- lmer(TRAIT~(1|LINE)+(1|LOC))

    summary(blup)

    我们可以看到遗传方差Vg为0.1970,残差方差Ve为0.2866,环境个数L为2。

    遗传力计算公式为:

    ## 计算遗传力

    h <- 0.197/(0.197+0.2866/2)

    结果为0.578901。

    多点有重复数据

    多点有重复数据输入文件格式如下:

    每列代表样本名,重复,种植地点和表型值。保存为制表符分隔的txt文件。

    ## 防止报错,需先执行这一步

    options(lmerControl=list(check.nobs.vs.rankZ ="warning",check.nobs.vs.nlev = "warning",check.nobs.vs.nRE= "warning",check.nlev.gtreq.5 = "warning",check.nlev.gtr.1= "warning"))

    ## 导入表型数据

    phe <- read.table("phe.txt", header =T, sep="\t")

    trait <- phe$Trait

    line <- phe$Line

    loc <- phe$Loc

    rep <- phe$Rep

    TRAIT <- as.numeric(trait)

    LINE <- as.factor(line)

    LOC <- as.factor(loc)

    REP <- as.factor(rep)

    ## 建模

    blup <- lmer(TRAIT~(1|LINE)+(1|LOC)+(1|REP%in%LOC)+(1|LINE:LOC))

    summary(blup)

    遗传力计算公式为:

    ## 计算遗传力

    h <-0.196543/(0.196543+0.001014/2+0.286031/(2*2))

    结果为0.7318463。

    多年多点有重复数据

    多年多点有重复数据输入文件格式如下:

    每列代表样本名,重复,年份,种植地点和表型值。保存为制表符分隔的txt文件。

    ## 防止报错,需先执行这一步

    options(lmerControl=list(check.nobs.vs.rankZ ="warning",check.nobs.vs.nlev = "warning",check.nobs.vs.nRE= "warning",check.nlev.gtreq.5 = "warning",check.nlev.gtr.1= "warning"))

    ## 导入表型数据

    phe <- read.table("phe.txt", header =T, sep="\t")

    trait <- phe$Trait

    line <- phe$Line

    loc <- phe$Loc

    rep <- phe$Rep

    year <- phe$Year

    TRAIT <- as.numeric(trait)

    LINE <- as.factor(line)

    LOC <- as.factor(loc)

    REP <- as.factor(rep)

    YEAR <- as.factor(year)

    ## 建模

    blup <-lmer(TRAIT~(1|LINE)+(1|LOC)+(1|YEAR)+(1|REP%in%LOC:YEAR)+(1|LINE:LOC)+(1|LINE:YEAR))

    summary(blup)

    遗传方差Vg为0.19187,品种与环境互作方差Vge为0.00949,品种与年份互作方差Vgy为0.01023,残差方差Ve为0.25782,重复数R为2,年份数Y为2,环境个数L为2。遗传力计算公式为:

    ## 计算遗传力

    h <- 0.19187/(0.19187+0.00949/2+0.01023/2+0.286031/(2*2*2))

    结果为0.8079285。

    参考资料:

    https://www.jianshu.com/p/668e3be27530

    https://cloud.tencent.com/developer/article/1445670

    相关文章

      网友评论

        本文标题:使用R语言计算遗传力

        本文链接:https://www.haomeiwen.com/subject/fbcwxhtx.html