#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.