R中非线性变换的动态数公式

时间:2019-05-10 20:03:12

标签: r regression

拥有一个包含许多预测变量的数据集,并且希望对所有变量进行非线性转换而无需手动编码所有变量。

此答案(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)

0 个答案:

没有答案