Множественная линейная регрессия — взаимодействие между преобразованной квадратичной переменной и факторной переменной

#r #regression #linear-regression

#r #регрессия #линейная регрессия

Вопрос:

У меня есть множественная линейная регрессия, как показано ниже, которая содержит термины взаимодействия, где некоторые из моих терминов являются факторными переменными (сезон, месяц, праздник, день недели, погода)

 regwithint=lm(casual~season:temp season:month year:temp 
            month:temp holiday:temp weekday:hum season 
            month holiday weekday weathersit temp windspeed
          ,data=training)
  

Однако переменные temp и windspeed были преобразованы в (temp ^ 3) и (windspeed ^ 2).

Глядя на условия взаимодействия, у меня есть взаимодействие между temp: будний день, где temp — это temp ^ 3, а будний день — факторная переменная.

Я знаю, что в большинстве случаев я должен использовать I(temp ^ 3), но означает ли тот факт, что он сопряжен с факторной переменной, что вместо этого я должен использовать poly(temp, 3,raw = T)?

Спасибо.

Комментарии:

1. Этот вопрос кажется странно знакомым.

Ответ №1:

Во-первых, давайте установим, что I() это нормально работает с взаимодействиями факторных переменных:

 data(iris)
reg <- lm(Sepal.Length~Species:I(Petal.Length^2), data=iris)
summary(reg)
  
 Call:
lm(formula = Sepal.Length ~ Species:I(Petal.Length^2), data = iris)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.87875 -0.22363 -0.00197  0.21664  1.06243 

Coefficients:
                                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)                         4.245539   0.133172  31.880  < 2e-16 ***
Speciessetosa:I(Petal.Length^2)     0.341688   0.062196   5.494  1.7e-07 ***
Speciesversicolor:I(Petal.Length^2) 0.092381   0.007413  12.462  < 2e-16 ***
Speciesvirginica:I(Petal.Length^2)  0.075714   0.004388  17.253  < 2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3431 on 146 degrees of freedom
Multiple R-squared:  0.8318,  Adjusted R-squared:  0.8284 
F-statistic: 240.7 on 3 and 146 DF,  p-value: < 2.2e-16
  

Теперь давайте посмотрим, работает ли ваша функция тоже:

 data(iris)
reg <- lm(Sepal.Length~Species: poly(Petal.Length,2,raw=T), data=iris)
summary(reg)
  

Это так (обратите внимание, что оно отличается тем, что оно также имеет член более низкого порядка):

 Call:
lm(formula = Sepal.Length ~ Species:poly(Petal.Length, 2, raw = T), 
    data = iris)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.73849 -0.22814 -0.01978  0.24177  0.98833 

Coefficients:
                                                  Estimate Std. Error t value Pr(>|t|)  
(Intercept)                                        1.79002    1.58957   1.126   0.2620  
Speciessetosa:poly(Petal.Length, 2, raw = T)1      3.87221    2.16771   1.786   0.0762 .
Speciesversicolor:poly(Petal.Length, 2, raw = T)1  1.13016    0.78109   1.447   0.1501  
Speciesvirginica:poly(Petal.Length, 2, raw = T)1   0.74216    0.56640   1.310   0.1922  
Speciessetosa:poly(Petal.Length, 2, raw = T)2     -1.12847    0.74087  -1.523   0.1299  
Speciesversicolor:poly(Petal.Length, 2, raw = T)2 -0.03641    0.09628  -0.378   0.7059  
Speciesvirginica:poly(Petal.Length, 2, raw = T)2   0.02178    0.05107   0.426   0.6705  
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3367 on 143 degrees of freedom
Multiple R-squared:  0.8413,  Adjusted R-squared:  0.8346 
F-statistic: 126.4 on 6 and 143 DF,  p-value: < 2.2e-16
  

Так в чем разница?

Ну, как я уже говорил в вашем другом вопросе, в основном это то I() , что подавляющее большинство программистов R используют в lm glm уравнениях и, потому что это гораздо более гибко — может использоваться для любого преобразования в уравнении.

Но каждому свое. ЭТО запрещает вопросы, основанные на мнениях, поэтому я собираюсь интерпретировать вопрос как «работают ли оба?», На что ответ «да» и «почему I () используется повсеместно?» на что ответ: «он гибок для любого преобразования». Что касается того, следует ли вам его использовать, это не тот вопрос, который мы можем законно задать или ответить на SO, но вы, вероятно, могли бы задать его на Programmers Stack Exchange (или как они там называют в наши дни) или Code Review Stack Exchange.