我想对具有线性,成对交互和二次项的数据集上的所有可用因子指定二次回归。在一个例子中,如果我有
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)
它不起作用。你可以帮我这个吗? 谢谢。
答案 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;%运算符)