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 库在这里只是为了脚本的清晰度(%>% 运算符)
我想对数据集上的所有可用因子指定二次回归,其中包含线性、成对交互和二次项。例如,如果我有
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 库在这里只是为了脚本的清晰度(%>% 运算符)