2015-03-16 3 views
0

У меня есть линейная модель с почти 0 Rsquare. Я делаю функцию с 1 параметром n, который описывает преобразование мощности, которое должно быть принято."lm" удлиненная функция. Линейная модель

Если n = 3 модель становится:

y = x1 + x2 + x1^2 + x2^2 + x1^3 + x2^3 

Как я могу ввести их в модели без необходимости писать его снова и снова?

ответ

1

вы можете использовать функцию поли в формуле как этот

set.seed(123) 
dat <- data.frame(y=rnorm(10), x1=rnorm(10), x2=rnorm(10)) 
n <-3 
fm <-lm(y ~ poly(x1, degree=n, raw=TRUE)+poly(x2, degree=n, raw=TRUE), data=dat) 
summary(fm) 
## Coefficients: 
##         Estimate Std. Error t value Pr(>|t|) 
## (Intercept)      0.50796 0.81187 0.626 0.576 
## poly(x1, degree = n, raw = TRUE)1 -0.54354 0.86195 -0.631 0.573 
## poly(x1, degree = n, raw = TRUE)2 -0.66328 0.55169 -1.202 0.315 
## poly(x1, degree = n, raw = TRUE)3 0.05989 0.35421 0.169 0.876 
## poly(x2, degree = n, raw = TRUE)1 1.06890 1.00518 1.063 0.366 
## poly(x2, degree = n, raw = TRUE)2 0.01655 0.76730 0.022 0.984 
## poly(x2, degree = n, raw = TRUE)3 -1.18610 0.84214 -1.408 0.254 

степени, конечно, максимальная степень x1 и x2, сырец = TRUE означает, что это эквивалентно x1 + I(x1^2) + ... , если raw = FALSE, полиномы будут ортогональными.

Обратите внимание, что число в конце имен коэффициентов представляет степень связанных многочленов.

PS: вы можете использовать poly(x1, x2, degree=n, raw=TRUE), чтобы написать аналогичную формулу, которая включает взаимодействия.

Смежные вопросы