Существуют ли методы для идентификации квадратичных компонентов в линейной модели с R? - PullRequest
3 голосов
/ 06 мая 2011

Предположим, у нас есть аддитивная модель вида y = x1 + x2 + ... с большим количеством переменных.Есть ли в R подпрограмма для определения переменных, которые следует рассматривать как проявляющие квадратичный эффект?Я знаю, что преобразование Бокса-Кокса позволяет идентифицировать ссылки для y, но как насчет x.Если есть только несколько переменных, их легко проверить, но как насчет хранения целой связки?

С уважением из Германии

Ответы [ 2 ]

8 голосов
/ 06 мая 2011

Вам, вероятно, не важно знать, нужны ли вам квадратичные термины, а узнать, являются ли какие-либо эффекты нелинейными.В то время как квадратичный член может взять некоторые из них, существуют некоторые явно не квадратичные эффекты, которые являются нелинейными.Есть много способов сделать это, но мне нравится использовать ограниченные кубические сплайны, реализованные в пакетах Hmisc и Design.

Например:

library(Design)
x1 <- runif(200)
x2 <- runif(200)
x3 <- runif(200)
x4 <- runif(200)
y <- x1 + x2 + rnorm(200)
f1    <- ols(y ~ rcs(x1,4) + rcs(x2,4) + rcs(x3,4) + rcs(x4,4))

> anova(f1)
                Analysis of Variance          Response: y 

 Factor          d.f. Partial SS  MS         F    P     
 x1                3   19.2033740 6.40112466 7.96 0.0001
  Nonlinear        2    5.6426655 2.82133277 3.51 0.0319
 x2                3   10.6042751 3.53475836 4.40 0.0051
  Nonlinear        2    0.5047319 0.25236593 0.31 0.7309
 x3                3    3.0844406 1.02814688 1.28 0.2829
  Nonlinear        2    0.1474818 0.07374091 0.09 0.9124
 x4                3    4.1770965 1.39236549 1.73 0.1619
  Nonlinear        2    4.1770665 2.08853325 2.60 0.0771
 TOTAL NONLINEAR   8    9.5322762 1.19153452 1.48 0.1660
 REGRESSION       12   37.1220435 3.09350362 3.85 <.0001
 ERROR           187  150.3064834 0.80377799      

ols isпо существу, эквивалент lm.Обратите внимание на таблицу ANOVA в выходных данных: в ней есть тест на нелинейность эффектов, включая глобальный тест.

0 голосов
/ 06 мая 2011

Если вы хотите создать все двусторонние взаимодействия, вы можете сделать это:

lm(y ~ (x1 + x2 + x3)^2, data=dat)

См .:

?formula
...