如何在 R 中进行边际模型分析?
How to do a marginal model analysis in R?
问题。我想在 R 中进行边际模型分析——我认为它有时被称为人口平均模型、边际多层次模型或边际线性回归模型。但是,我在 Whosebug、Google 或 Youtube 上找不到任何关于如何在 R 中专门执行此操作的信息。
背景。 我说的是 The Analysis Factor here and here and as described on these PowerPoint slides. There's one person on CrossValidated 所描述的边际模型,他在SPSS 和 R 但他没有显示他的实际代码,他的问题也没有得到回答。不确定是否应该在 nlme
包中完成。
SPSS 代码。 我已经描述了这些数据的性质 elsewhere on CrossValidated,但基本上,我们感兴趣的是预测参与者的情绪(在 2 个不同的环境中测量两次)条件)通过个性(测量一次)。这是我在 SPSS 中使用的代码。
MIXED emotion BY condition WITH centeredPersonality
/FIXED=condition centeredPersonality condition*centeredPersonality
/METHOD = REML
/REPEATED= condition | SUBJECT (ID) COVTYPE(UN)
/PRINT=SOLUTION.
问题。如何在 R 中执行此操作?
我认为 geepack 包的 geeglm 可以做到这一点。我的理解是,广义估计方程与边际模型是一回事。 geeglm 的语法类似于 glm,如果你使用高斯族,你会得到类似于标准边际模型的结果。我确定还有其他方法,但这应该可行。
edit:这是一个您可能会使用的示例,对条件和个性这两个变量及其交互作用进行情绪回归。条件被视为一个因素,错误按 id 聚类。 geeglm 的默认系列是 gaussian/Normal,因此我们不需要指定它。
> library(geepack)
> dat <- data.frame(id = c(1, 1, 2, 2, 3, 3, 4, 4),
+ condition = factor(c(1, 2, 1, 2, 1, 2, 1, 2)),
+ personality = c(2.5, 2.5, 4.0, 4.0, 3.3, 3.3, 4.2, 4.2),
+ emotion = c(5.0, 4.9, 2.6, 2.3, 4.3, 2.9, 1.0, 1.0))
>
> my_mod <- geeglm(emotion ~ condition*personality, data = dat, id = id)
> summary(my_mod)
Call:
geeglm(formula = emotion ~ condition * personality, data = dat,
id = id)
Coefficients:
Estimate Std.err Wald Pr(>|W|)
(Intercept) 10.815 1.296 69.68 < 2e-16 ***
condition2 -0.902 1.284 0.49 0.48
personality -2.169 0.385 31.77 1.7e-08 ***
condition2:personality 0.129 0.322 0.16 0.69
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Estimated Scale Parameters:
Estimate Std.err
(Intercept) 0.223 0.0427
Correlation: Structure = independenceNumber of clusters: 4 Maximum cluster size: 2
问题。我想在 R 中进行边际模型分析——我认为它有时被称为人口平均模型、边际多层次模型或边际线性回归模型。但是,我在 Whosebug、Google 或 Youtube 上找不到任何关于如何在 R 中专门执行此操作的信息。
背景。 我说的是 The Analysis Factor here and here and as described on these PowerPoint slides. There's one person on CrossValidated 所描述的边际模型,他在SPSS 和 R 但他没有显示他的实际代码,他的问题也没有得到回答。不确定是否应该在 nlme
包中完成。
SPSS 代码。 我已经描述了这些数据的性质 elsewhere on CrossValidated,但基本上,我们感兴趣的是预测参与者的情绪(在 2 个不同的环境中测量两次)条件)通过个性(测量一次)。这是我在 SPSS 中使用的代码。
MIXED emotion BY condition WITH centeredPersonality
/FIXED=condition centeredPersonality condition*centeredPersonality
/METHOD = REML
/REPEATED= condition | SUBJECT (ID) COVTYPE(UN)
/PRINT=SOLUTION.
问题。如何在 R 中执行此操作?
我认为 geepack 包的 geeglm 可以做到这一点。我的理解是,广义估计方程与边际模型是一回事。 geeglm 的语法类似于 glm,如果你使用高斯族,你会得到类似于标准边际模型的结果。我确定还有其他方法,但这应该可行。
edit:这是一个您可能会使用的示例,对条件和个性这两个变量及其交互作用进行情绪回归。条件被视为一个因素,错误按 id 聚类。 geeglm 的默认系列是 gaussian/Normal,因此我们不需要指定它。
> library(geepack)
> dat <- data.frame(id = c(1, 1, 2, 2, 3, 3, 4, 4),
+ condition = factor(c(1, 2, 1, 2, 1, 2, 1, 2)),
+ personality = c(2.5, 2.5, 4.0, 4.0, 3.3, 3.3, 4.2, 4.2),
+ emotion = c(5.0, 4.9, 2.6, 2.3, 4.3, 2.9, 1.0, 1.0))
>
> my_mod <- geeglm(emotion ~ condition*personality, data = dat, id = id)
> summary(my_mod)
Call:
geeglm(formula = emotion ~ condition * personality, data = dat,
id = id)
Coefficients:
Estimate Std.err Wald Pr(>|W|)
(Intercept) 10.815 1.296 69.68 < 2e-16 ***
condition2 -0.902 1.284 0.49 0.48
personality -2.169 0.385 31.77 1.7e-08 ***
condition2:personality 0.129 0.322 0.16 0.69
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Estimated Scale Parameters:
Estimate Std.err
(Intercept) 0.223 0.0427
Correlation: Structure = independenceNumber of clusters: 4 Maximum cluster size: 2