如何以紧凑形式描述回归交互项?

问题描述 投票:1回答:2

我有回归变量abce_1e_2,我想运行以下回归:

y ~ a + b + c + e_1 + e_2 + a.e_1 + a.e_2 + b.e_1 + b.e_2 + c.e_1 + c.e_2

e_1e_2的每个必须与abc变量交互。

我实际上有5个e和其他5个变量。什么是编写代码而不是单独编写a:e_1a:e_2等的最快方法?

r linear-regression
2个回答
0
投票

如果您知道公式中交互式部分的变量的分组名称,例如下面的pq

p <- c("a","b","c")
q <- c("e_1","e_2")

您可以尝试使用下面的代码使用as.formulapaste0来生成整个公式,即,

f <- as.formula(paste0("y ~",paste0(c(p,q,do.call(paste, c(expand.grid(p,q),sep = ":"))),collapse = "+")))

诸如此类

> f
y ~ a + b + c + e_1 + e_2 + a:e_1 + b:e_1 + c:e_1 + a:e_2 + b:e_2 + 
    c:e_2

> class(f)
[1] "formula"

0
投票

~(a+b+c)*(e1+e2)怎么样?

示例:

dd <- data.frame(a=1,b=1,c=1,e1=1,e2=1)
colnames(model.matrix(~(a+b+c)*(e1+e2),dd)
##  [1] "(Intercept)" "a"           "b"           "c"           "e1"         
##  [6] "e2"          "a:e1"        "a:e2"        "b:e1"        "b:e2"       
## [11] "c:e1"        "c:e2"     
© www.soinside.com 2019 - 2024. All rights reserved.