添加两组变量之间所有可能的双向交互 - R.

时间:2016-03-22 01:51:33

标签: r

假设我有以下规范:

glm(death ~ age + black + hisp + other + rich + middle, family = binomial("probit"), data=data)

是否有一种直接的方式来添加“种族群体”(黑人,黑人和其他)与“收入群体”(富人,中间人)之间的所有双向互动。因此,交互将是黑色富,黑色中间,hisp *丰富等等。

2 个答案:

答案 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)