如何使用变量组有效地执行回归

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

有没有办法在 R 中执行以下操作?我的意思是仅使用 R 原生的功能。

假设我有一个数据框 df,有 8 列:x1 到 x8。 我想将 x1 上的 x8 回归到 x7。

我们将变量 (x1, x2, x3) 表示为 P。 变量 (x4, x5, x6) 可以是 Q。

鉴于这些定义,有没有办法让我更简洁地执行如下所示的操作?

model = lm(x8 ~ (x1 + x2 + x3) * (x4 + x5 + x6) + x7, data=df)

就目前情况而言,我只是用paste()将东西拼凑在一起,然后将其放入as.formula()中。

model = lm(as.formula(paste(stmt, sep="")), data=df)

还要考虑这不是为了特定的分析。如果有一种简单的方法可以做到这一点,那就太好了。如果没有,我就像现在一样使用管道胶带。

r regression
1个回答
0
投票

reformulate
outer
一起使用。

P <- c("x1", "x2", "x3")
Q <- c("x4", "x5", "x6")
other <- "x7"
response <- "y"

fo <- reformulate( c(P, Q, other, outer(P, Q, paste, sep = ":")), response)
fo
## y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x1:x4 + x2:x4 + x3:x4 + 
##    x1:x5 + x2:x5 + x3:x5 + x1:x6 + x2:x6 + x3:x6

lm(fo, data)
© www.soinside.com 2019 - 2024. All rights reserved.