从lme中提取方差分量

时间:2016-05-06 15:05:32

标签: r variance nlme

我在不同基因型的个体中测量了给定性状(TRAIT1),这些基因型在温度1或温度2下饲养。我想测试基因型(随机效应)和温度(温度与基因型交叉)对我的特性和它们之间的相互作用的影响。然后,我想计算我的TRAIT1的遗传性,我需要提取方差组分(基因型内和基因型之间)。 这是我运行的模型:

glm2<-lme(TRAI1 ~ temperature * genotype,random=~1|genotype, data=x)

但我不知道从输出中提取方差分量:

> summary(glm2)
Linear mixed-effects model fit by REML
 Data: x 
       AIC      BIC   logLik
  37778.39 37817.32 -18883.2

Random effects:
 Formula: ~1 | genotype
        (Intercept) Residual
StdDev:    7.201168 11.22449

Fixed effects: TRAI1 ~ temperature * genotype 
                         Value Std.Error   DF   t-value p-value
(Intercept)          137.39825 1.7585819 4655  78.13014  0.0000
temperature           -0.72913 0.0614889 4655 -11.85787  0.0000
genotype              -0.01086 0.0033006  198  -3.29095  0.0012
temperature:genotype   0.00021 0.0001156 4655   1.85912  0.0631
 Correlation: 
                     (Intr) tmprtr gentyp
temperature          -0.794              
genotype             -0.864  0.688       
temperature:genotype  0.687 -0.866 -0.795

Standardized Within-Group Residuals:
        Min          Q1         Med          Q3         Max 
-3.59940153 -0.64226045 -0.03134888  0.60768582  4.54919777 

Number of Observations: 4857
Number of Groups: 200 

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

nlme包具有VarCorr()提取器功能:

library(nlme)
fm2 <- lme(distance ~ age + Sex, data = Orthodont, random = ~ 1|Subject)
(v <- VarCorr(fm2))
## Subject = pdLogChol(1) 
##             Variance StdDev  
## (Intercept) 3.266784 1.807425
## Residual    2.049456 1.431592

然而,尝试str(v)或天真地尝试提取值将显示这不幸是字符矩阵,因此您还必须执行as.numeric()

as.numeric(v[,"Variance"])