让我们考虑由两个独立的随机效应组成的简单模型:
$$y_{ijk} = \mu + \delta1_i + \delta2_j + \epsilon_{i,j,k}$$
其中\delta1_i
和\delta2_j
是独立的随机效应(即\delta1_i \sim N(0,\sigma_1^2)
iid,\delta2_i \sim N(0,\sigma_1^2)
iid都是独立的)。
使用lme4 :: lmer可以很容易地定义和推断这种模型的方差成分(很抱歉,下面的示例可能没有任何物理意义):
library(lme4)
library(nlme)
data(Orthodont,package="nlme")
lmer(data=Orthodont,distance~1+(1|Sex)+(1|Subject))
#Linear mixed model fit by REML ['lmerMod']
#Formula: distance ~ 1 + (1 | Sex) + (1 | Subject)
# Data: Orthodont
#REML criterion at convergence: 510.3937
#Random effects:
# Groups Name Std.Dev.
# Subject (Intercept) 1.596
# Sex (Intercept) 1.550
# Residual 2.220
#Number of obs: 108, groups: Subject, 27; Sex, 2
#Fixed Effects:
#(Intercept)
# 23.83
如何使用nlme :: lme轻松建模?使用随机效果列表指定随机效果会根据随机效果的顺序隐式引入交互,可以在此处进行验证(更改规格顺序,更改结果):
VarCorr(lme(data=Orthodont,distance~1,random=list(~1|Subject,~1|Sex)))
# Variance StdDev
#Subject = pdLogChol(1)
#(Intercept) 1.875987 1.369667
#Sex = pdLogChol(1)
#(Intercept) 1.875987 1.369667
#Residual 4.929784 2.220312
VarCorr(lme(data=Orthodont,distance~1,random=list(~1|Sex,~1|Subject)))
# Variance StdDev
#Sex = pdLogChol(1)
#(Intercept) 2.403699 1.550387
#Subject = pdLogChol(1)
#(Intercept) 2.546702 1.595839
#Residual 4.929784 2.220312