Функция lm в R исключает 1 фиктивную переменную
У меня есть датафрейм, который выглядит так:
Date A B MONTH
2016-01-01 3 10 January
2016-01-02 5 13 January
2016-01-03 8 12 January
.
.
.
2016-12-29 4 13 December
2016-12-30 5 12 December
2016-12-31 6 4 December
С этим фреймом данных я хочу запустить регрессионную модель со столбцом Month в качестве фиктивных переменных.
Я попробовал два метода, чтобы выполнить это, и каждый раз, когда я делаю это, он всегда исключает месяц "апрель".
Есть идеи, почему это может происходить?
1-й метод:
лм (A ~ MONTH + B, данные = df)
Пример вывода:
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.248e+01 3.600e+01 0.902 0.36754
MONTHAugust 7.425e+02 3.630e+01 6.680 9.29e-11 ***
MONTHDecember -1.840e+02 3.277e+01 -5.613 4.02e-08 ***
MONTHFebruary -8.673e+00 2.855e+01 -0.129 0.89770
MONTHJanuary -4.084e+01 2.945e+01 -0.368 0.71291
MONTHJuly 9.407e+02 3.100e+01 4.540 7.73e-06 ***
MONTHJune 3.387e+01 3.077e+01 2.401 0.01687 *
MONTHMarch 2.797e+02 2.884e+01 6.231 1.32e-09 ***
MONTHMay -9.500e+01 3.122e+01 -3.043 0.00252 **
MONTHNovember -1.321e+01 3.555e+01 -1.778 0.07626 .
MONTHOctober 7.145e+01 3.200e+01 0.983 0.32637
MONTHSeptember 9.691e+02 3.916e+01 4.319 2.04e-05 ***
B 5.279e-02 1.161e-03 11.013 < 2e-16 ***
2-й метод:
A <- model.matrix (A ~ B + MONTH, df)
головка (А)
(Intercept) Sum.of.Media.Cost MONTHAugust MONTHDecember MONTHFebruary MONTHJanuary MONTHJuly MONTHJune MONTHMarch MONTHMay
1 1 0 0 0 0
1 0 0 0 0
2 1 0 0 0 0
1 0 0 0 0
3 1 0 0 0 0
1 0 0 0 0
4 1 0 0 0 0
1 0 0 0 0
5 1 0 0 0 0
1 0 0 0 0
6 1 0 0 0 0
1 0 0 0 0
MONTHNovember MONTHOctober MONTHSeptember
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
6 0 0 0
2 ответа
Пытаться A ~ B + MONTH -1
- если ваши макеты полные, их линейная комбинация такая же, как и у константы. Отсюда пониженный ранг, и вы не можете этого сделать, поэтому что-то должно дать.
Либо вы сохраняете константу (и удаляете одну месячную пустышку), чтобы получить "смещение в месяц для перехвата", либо, и это то, что я бы сделал, удалите константу, чтобы получить "ежемесячный перехват".
Когда вы имеете дело с фиктивными переменными, это нормально. Если у вас есть n уровней для вашей факторной переменной, то вам нужны только n-1 фиктивные переменные. Поскольку оставшийся случай - это когда все фиктивные переменные равны нулю. Я думаю, что апрель - исключенный месяц, потому что это первый, если учесть алфавитный порядок.