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

R: quadratic regression all factors: how to specify a formula?

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

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)

而且它不起作用。你能帮我解决这个问题吗? 谢谢。

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

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 库在这里只是为了脚本的清晰度(%>% 运算符)