我正在尝试重现Snijders&Bosker的“多级分析”中的示例,但找不到如何计算S.E.。 2级残差的协方差。
我在SO上发现了2个相关问题:
Extracting covariance of level-2 residuals from lme4 output
Standard Error of variance component from the output of lmer
我使用了Snijders提供的数据和脚本:
https://www.stats.ox.ac.uk/~snijders/mlbook2_r_dat.zip
https://www.stats.ox.ac.uk/~snijders/ch45.r
# Read data
mlbook_red <- read.table("mlbook2_r.dat", header=TRUE)
library(lme4)
# Example 5.4
mlb54 <- lmer(langPOST ~ IQ_verb*ses + sch_iqv*sch_ses
+ (IQ_verb|schoolnr), data = mlbook_red,
REML = FALSE)
dd.ML <- lme4:::devfun2(mlb54,useSc=TRUE,signames=FALSE)
vv <- as.data.frame(VarCorr(mlb54)) ## need ML estimates!
pars <- vv[,"sdcor"]
library("numDeriv")
hh1 <- hessian(dd.ML,pars)
vv2 <- 2*solve(hh1) ## 2* converts from log-likelihood to deviance scale
sqrt(diag(vv2)) ## get standard errors
我得到的数字是:
[1] 0.1898 0.1539 0.1014 0.0744
我认为这些数字不在1.050 0.069 0.204 0.907
附近。系数就在as.data.frame(VarCorr(mlb54))$vcov
:[1] 8.369 0.164 -0.929 37.378
中。
任何人都可以帮助解释哪里出了问题吗?非常感谢!