Имеет набор данных со многими переменными предикторами и хочет использовать нелинейное преобразование всех переменных БЕЗ ручного кодирования всех из них.
Этот ответ ( краткий вызов формулы для многих переменных при построении модели) предоставляет способ включения всех переменных-предикторов, но не включает способ включения нелинейного преобразования, такого как 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 являются матрицами предикторов, а НЕ векторов столбцов.Я ищу способ пройти через большое количество предикторов и получить их нелинейное преобразование.
Любая помощь по этому вопросу будет принята.
РЕДАКТИРОВАТЬ
Этот код работает, но довольно неуклюже.Допускает преобразования в блочных матрицах
#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)