SPSS 的 MIXED 过程中 REPEATED 子命令的 lmer/nlme 等价物是什么?
What is the lmer/nlme equivalent of the REPEATED subcommand in SPSS's MIXED procedure?
我遇到了这样的 SPSS 语法
MIXED value BY factor1
/CRITERIA=CIN(95) MXITER(100) MXSTEP(10) SCORING(1) SINGULAR(0.000000000001)
HCONVERGE(0, ABSOLUTE) LCONVERGE(0, ABSOLUTE) PCONVERGE(0.000001,
ABSOLUTE)
/FIXED=factor1 | SSTYPE(3)
/METHOD=REML
/REPEATED=factor1 | SUBJECT(participant) COVTYPE(UN).
并努力为此类模型找到等效的 lmer
/nlme
(或一般的 R)公式。
有人知道如何将 REPEATED
子命令转换为 R 代码吗?
我认为 /REPEATED
只是指定随机效应的方式,所以
random=~factor1|participant
在 nlme.
我还猜测固定效应和随机效应的截距都是隐含的。
所以在 lme4 + lmerTest 中,整个模型可能是:
m <- lmerTest::lmer(value ~ 1 + factor1 + (1+factor1|participant))
lmerTest::anova(m, type=3,ddf='Satterthwaite')
这总结了 answers 我在 r-sig-mixed-models 邮件列表上的内容:
REPEATED
命令指定残差方差-协方差矩阵(R矩阵中的结构,即所谓R-side结构, 的 model。对于 lme4::lmer()
,此结构固定为单位矩阵的倍数。但是,可以使用 nlme::gls()
中的 weights
和 correlation
参数指定 R-side 结构,如下所示:
gls(value ~ factor1,
correlation = corSymm(form = ~ 1|participant),
weights = varIdent(form = ~1|factor1),
method = "REML",
data = data)
如果除了 R 端结构之外还需要 G 端 效果,nlme::lme()
提供了适当的扩展。
我们在论文中有 运行 一些混合模型,我们在 R 中复制了所有 SPSS 结果。这是我们的语法:
MIXED y BY x1 WITH x2 x3
/CRITERIA=CIN(95) MXITER(100) MXSTEP(10) SCORING(1) SINGULAR(0.000000000001) HCONVERGE(0,
ABSOLUTE) LCONVERGE(0, ABSOLUTE) PCONVERGE(0.000001, ABSOLUTE)
/FIXED=x1 x2 x3 | SSTYPE(3)
/METHOD=REML
/PRINT=G R SOLUTION TESTCOV
/RANDOM=INTERCEPT x1 | SUBJECT(id) COVTYPE(UN)
/REPEATED=x1| SUBJECT(id) COVTYPE(UN).
lmer(
y ~ x1 + x2 + x3 + (1 + x1 | id),
data = data,
# this one is required because the random slope
# is categorical. else, you could model uncorrelated
# slope / intercept, see below
control = lmerControl(check.nobs.vs.nRE = "ignore")
)
或
lmer(
y ~ x1 + x2 + x3 + (1 + x1 || id),
data = data
)
我们已将时间变量 x1
转换为一个因子,因为 SPSS 似乎无法处理 REPEATED
语句中的数字时间变量。
要获得相同的标准误差、p 值和置信区间,请使用 lmerTest::summary(..., ddf = "Satterthwaite")
,因为 SPSS 默认使用 Satterthwaite 近似。
我遇到了这样的 SPSS 语法
MIXED value BY factor1
/CRITERIA=CIN(95) MXITER(100) MXSTEP(10) SCORING(1) SINGULAR(0.000000000001)
HCONVERGE(0, ABSOLUTE) LCONVERGE(0, ABSOLUTE) PCONVERGE(0.000001,
ABSOLUTE)
/FIXED=factor1 | SSTYPE(3)
/METHOD=REML
/REPEATED=factor1 | SUBJECT(participant) COVTYPE(UN).
并努力为此类模型找到等效的 lmer
/nlme
(或一般的 R)公式。
有人知道如何将 REPEATED
子命令转换为 R 代码吗?
我认为 /REPEATED
只是指定随机效应的方式,所以
random=~factor1|participant
在 nlme.
我还猜测固定效应和随机效应的截距都是隐含的。
所以在 lme4 + lmerTest 中,整个模型可能是:
m <- lmerTest::lmer(value ~ 1 + factor1 + (1+factor1|participant))
lmerTest::anova(m, type=3,ddf='Satterthwaite')
这总结了 answers 我在 r-sig-mixed-models 邮件列表上的内容:
REPEATED
命令指定残差方差-协方差矩阵(R矩阵中的结构,即所谓R-side结构, 的 model。对于 lme4::lmer()
,此结构固定为单位矩阵的倍数。但是,可以使用 nlme::gls()
中的 weights
和 correlation
参数指定 R-side 结构,如下所示:
gls(value ~ factor1,
correlation = corSymm(form = ~ 1|participant),
weights = varIdent(form = ~1|factor1),
method = "REML",
data = data)
如果除了 R 端结构之外还需要 G 端 效果,nlme::lme()
提供了适当的扩展。
我们在论文中有 运行 一些混合模型,我们在 R 中复制了所有 SPSS 结果。这是我们的语法:
MIXED y BY x1 WITH x2 x3
/CRITERIA=CIN(95) MXITER(100) MXSTEP(10) SCORING(1) SINGULAR(0.000000000001) HCONVERGE(0,
ABSOLUTE) LCONVERGE(0, ABSOLUTE) PCONVERGE(0.000001, ABSOLUTE)
/FIXED=x1 x2 x3 | SSTYPE(3)
/METHOD=REML
/PRINT=G R SOLUTION TESTCOV
/RANDOM=INTERCEPT x1 | SUBJECT(id) COVTYPE(UN)
/REPEATED=x1| SUBJECT(id) COVTYPE(UN).
lmer(
y ~ x1 + x2 + x3 + (1 + x1 | id),
data = data,
# this one is required because the random slope
# is categorical. else, you could model uncorrelated
# slope / intercept, see below
control = lmerControl(check.nobs.vs.nRE = "ignore")
)
或
lmer(
y ~ x1 + x2 + x3 + (1 + x1 || id),
data = data
)
我们已将时间变量 x1
转换为一个因子,因为 SPSS 似乎无法处理 REPEATED
语句中的数字时间变量。
要获得相同的标准误差、p 值和置信区间,请使用 lmerTest::summary(..., ddf = "Satterthwaite")
,因为 SPSS 默认使用 Satterthwaite 近似。