извлечь компоненты дисперсии из lme

У меня есть измерения данного признака (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 

Может ли кто-нибудь помочь мне с этим, пожалуйста?


person Elvira Lafuente    schedule 06.05.2016    source источник
comment
Пожалуйста, подумайте о правильном форматировании кода. Приведенный выше код невозможно прочитать!   -  person    schedule 06.05.2016


Ответы (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"])
person Ben Bolker    schedule 13.05.2016