Формула для динамического числа нелинейных преобразований в R - PullRequest
0 голосов
/ 10 мая 2019

Имеет набор данных со многими переменными предикторами и хочет использовать нелинейное преобразование всех переменных БЕЗ ручного кодирования всех из них.

Этот ответ ( краткий вызов формулы для многих переменных при построении модели) предоставляет способ включения всех переменных-предикторов, но не включает способ включения нелинейного преобразования, такого как 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...