假设我有以下规范:
glm(death ~ age + black + hisp + other + rich + middle, family = binomial("probit"), data=data)
是否有一种直接的方式来添加“种族群体”(黑人,黑人和其他)与“收入群体”(富人,中间人)之间的所有双向互动。因此,交互将是黑色富,黑色中间,hisp *丰富等等。
答案 0 :(得分:3)
使用公式界面可以轻松地使用^
- 运算符,您可以通过(ethnicity + incgrp)^2
构建来自两个因子变量的所有2路交互,但这仅适用于使用R因子约定的情况。看起来你试图绕过公式和因子的正确使用,而不是做SAS风格的虚拟变量创建。根据您的情况,您可以尝试:
glm(death ~ age + (black + hisp + other)*( rich + middle), family = binomial("probit"), data=data)
formula
解释使用^
和*
来构建互动。他们失去了传统的数学意义。见?formula
答案 1 :(得分:2)
考虑粘贴公式中的所有组合:
vars1 <- c('black', 'hisp', 'other')
vars2 <- c('rich', 'middle')
interactions <- outer(vars1, vars2, function(x,y){paste0(x,'*',y)})
intjoin <- paste(interactions, collapse=" + ")
#[1] "black*rich + hisp*rich + other*rich + black*middle + hisp*middle + other*middle"
model <- glm(paste0('death ~ age + black + hisp + other + rich + middle + ', intjoin),
family = binomial("probit"), data=data)