Функция 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 фиктивные переменные. Поскольку оставшийся случай - это когда все фиктивные переменные равны нулю. Я думаю, что апрель - исключенный месяц, потому что это первый, если учесть алфавитный порядок.

Другие вопросы по тегам