R:二次回归所有因素:如何指定公式?

时间:2015-03-13 12:28:43

标签: r formula lm term quadratic

我想对具有线性,成对交互和二次项的数据集上的所有可用因子指定二次回归。在一个例子中,如果我有

y<-rnorm(1000)
A<-sample(1:4,1000,replace=TRUE)
B<-sample(1:2,1000,replace=TRUE)
C<-sample(1:10,1000,replace=TRUE)
Dataset<-data.frame(y,A,B,C)

如果我想以这种方式回归y我的所有因素,我希望有一个像

这样的模型
model<-lm(y~.+.^2+I(A^2)+I(B^2)+I(C^2),data=Dataset)

但我想知道是否有一个表达式指定所有因子的所有二次项,所以我不必指定所有I(A^2)+I(B^2)+I(C^2)

我试过了

model<-lm(y~.+.^2+I(.^2),data=Dataset)

它不起作用。你可以帮我这个吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

我没有看到直接的解决方案,所以我想出了一种重建公式的方法。这适用于任何数量的变量:

library(dplyr)
data <- mtcars
y    <- "cyl"
formula <-  paste0("I(", names(data)[names(data)!=y], "^2)+", collapse="") %>%
  paste(y, "~", .) %>%
  substr(., 1, nchar(.)-1) %>%
  as.formula
lm(data=mtcars, formula)

您可以修改它以包含单个因素和交互。 dplyr库只是为了清晰的脚本(%&gt;%运算符)