在回归模型中,是否可以仅包含一个因子的虚拟变量的交互?例如,假设我有:
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,但是如果可能的话我想简化一些事情.
真的很感激任何输入!!
您遗漏的一个关键点是,当您看到诸如 之类的显着影响时x2:z,这并不意味着x与zwhen相互作用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 == 2到x == 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)