在lm中编写交互项的不同方法

我有一个关于在回归模型中指定交互的最好方法的问题。考虑以下数据:
d <- structure(list(r = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("r1","r2"),
class = "factor"), s = structure(c(1L, 1L, 1L, 1L, 1L,
2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L),
.Label = c("s1","s2"), class = "factor"), rs = structure(c(1L, 1L,
1L,1L, 1L,2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L),
.Label = c("r1s1","r1s2", "r2s1", "r2s2"), class = "factor"),
y = c(19.3788027518437, 23.832287726332, 26.2533235300492,
15.962906892112, 24.2873740664331, 28.5181676764727, 25.2757801195961,
25.3601044326474, 25.3066440027202, 24.3298865128677, 32.5684219007394,
31.0048406654209, 31.671238316086, 34.1933764518288, 36.8784821769123,
41.6691435168277, 40.4669714825801, 39.2664137501106, 39.4884849591932,
49.247505535468)), .Names = c("r","s", "rs", "y"),
row.names = c(NA, -20L), class = "data.frame")

用两种等价的方法来指定模型的交互:
lm0 <- lm(y ~ r*s, data=d)
lm1 <- lm(y ~ r + s + r:s, data=d)

我的问题是,如果我能指定一个有着相同水平的交互作用的新变量(rs):
lm2 <- lm(y ~ r + s + rs, data=d)
这种方法有什么优点/缺点? 为什么这两种方法的结果是不同的?
summary(lm1)
lm(formula = y ~ r + s + r:s, data = d, x = TRUE)
coef.est coef.se
(Intercept) 21.94     1.46
rr2         11.32     2.07
ss2          3.82     2.07
rr2:ss2      4.95     2.92
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87
summary(lm2)
lm(formula = y ~ r + s + rs, data = d, x = TRUE)
coef.est coef.se
(Intercept) 21.94     1.46
rr2         11.32     2.07
ss2          8.76     2.07   # ss2 coef is different from lm1
rsr1s2      -4.95     2.92
---
n = 20, k = 4
residual sd = 3.27, R-Squared = 0.87
数据分析师 Level2 提问 在 2017-12-20 在 代码问题.
添加评论
1 答案
最佳答案
结果是不同的,因为lm设置模型的方式与您自己设置时的交互方式不同。如果查看残差sd,它是相同的,这表明潜在模型是相同的,只是表达(对内部)的不同。

如果你把你的交互定义为paste(d$s, d$r) ,而不是paste(d$r,d$s) ,你的参数估计值会以有趣的方式再次改变。

注意,在lm1的model summary中,ss2的系数估计值比lm2的总结低4.94,rr2的系数是:ss2为4.95(如果打印到3位小数,差异就消失了)。这是另一个迹象,表明已经发生了内部的重新安排。

我想不出有什么优势,但是可能有一个更复杂的模型,你不需要一个完整的交互项,而只需要在两个或多个因素之间的“交叉”中的一些术语。
数据总监 Level1 回答于 在 2018-01-20。
添加评论

您的回答

*代码插入功能已上线
发布您的回答,意味着您同意了我们的 隐私政策服务条款