R - 在回归中仅与一个因子水平相互作用

use*_*788 6 r lm

在回归模型中,是否可以仅包含一个因子的虚拟变量的交互?例如,假设我有:

x: numerical vector of 3 variables (1,2 and 3)
y: response variable
z: numerical vector
Run Code Online (Sandbox Code Playgroud)

有可能建立一个像这样的模型:

y ~ factor(x) + factor(x) : z
Run Code Online (Sandbox Code Playgroud)

但只包括与一个级别的交互X?我意识到我可以为每个级别创建一个单独的虚拟变量x,但是如果可能的话我想简化一些事情.

真的很感激任何输入!!

Mar*_*ius 5

您遗漏的一个关键点是,当您看到诸如 之类的显着影响时x2:z,这并不意味着xzwhen相互作用x == 2,这意味着之间的差异x == 2x == 1(或任何您的参考水平)与 z 相互作用。这不是x与 交互的级别z,而是为 设置的对比之一x

因此,对于具有默认处理对比的 3 级因子:

df <- data.frame(x = sample(1:3, 10, TRUE), y = rnorm(10), z = rnorm(10))
df$x <- factor(df$x)
contrasts(df$x)
  2 3
1 0 0
2 1 0
3 0 1
Run Code Online (Sandbox Code Playgroud)

如果你真的认为只有第一个对比是很重要的,你可以创建一个新的变量,比较x == 2x == 1,并忽略x == 3

df$x_1vs2 <- NA
df$x_1vs2[df$x == 1] <- 0
df$x_1vs2[df$x == 2] <- 1
df$x_1vs2[df$x == 3] <- NA
Run Code Online (Sandbox Code Playgroud)

然后使用它运行你的回归:

lm(y ~ x_1vs2 + x_1vs2:z)
Run Code Online (Sandbox Code Playgroud)