拥有一个包含许多预测变量的数据集,并且希望对所有变量进行非线性转换而无需手动编码所有变量。
此答案(short formula call for many variables when building a model)提供了如何包括所有预测变量的方法,但不包括如何包括诸如poly(x,2)的非线性变换。
我正在尝试获得以下回归结果
#data.frame
df <- data.frame(y = rnorm(100), x1 = rnorm(100,2,1), x2 = rnorm(100,5,3))
#ols regression
lm(y ~ ., data = df)
#ols regression with poly -> output I am trying to get
lm(y ~ poly(x1,2) + I(x2^2), data = df)
理论上,x1和x2是预测变量NOT列向量的矩阵。我正在寻找一种通过大量预测变量并对其进行非线性转换的方法。
任何帮助,将不胜感激。
编辑
此代码有效,但相当笨拙。允许在块矩阵中进行转换
#estimate OLS
g <- lm(y ~ ., data = df)
#obtain model matrix and transformation
X <- df %>% dplyr::select(., x1,x2) %>% as.matrix()
X2 <- model.matrix(g)[,-1]^2
X3 <- model.matrix(g)[,-1]^3
y <- df$y
lm(y ~ X + X2 + X3)