Многократная модель LM, возвращающая одинаковые коэффициенты - PullRequest
0 голосов
/ 27 декабря 2018

Hello Stack Community,

Я пытаюсь смоделировать рост заработной платы на территориях США, используя линейные модели для прогнозирования будущего.Я хочу попытаться создать модель для каждого штата / территории (DC, VI и PR), однако, когда я смотрю на коэффициенты для моих моделей, они одинаковы для каждого штата.

До сих пор я использовал комбинацию plyr, dplyr и broom для создания и сортировки моего фрейма данных (с именем stuben_dat) для этого проекта

#Wage Growth
state_data = stuben_dat %>% group_by(st) %>% 
do (state_wg= lm(wage_growth ~ us_wage_growth + lag_wage_growth  + dum1 
+dum2 +dum3,
               data= stuben_dat, subset=yr>= (current_year - 5))) 
#The dummy variables adjust for seasonality (q1 vs q2 vs q3 vs q4)
#The current_year = whatever year I last updated the program
#The current_year-5 value lets me change the look back period
#This look back period can be used to exclude recessions or outliers

Вот лишь снимок моеговывод, и, как вы можете видеть, бета-коэффициенты и статистика регрессии абсолютно одинаковы для каждого состояния (только AK и AL) показаны здесь.Однако я хочу создать отдельную модель для каждого штата.

# A tibble: 318 x 6
# Groups:   st [53]
   st    term             estimate std.error statistic   p.value
   <chr> <chr>               <dbl>     <dbl>     <dbl>     <dbl>
 1 AK    (Intercept)       -1.75      0.294     -5.97  3.28e-  9
 2 AK    us_wage_growth   996.       23.6       42.2   1.82e-228
 3 AK    lag_wage_growth    0.191     0.0205     9.34  5.58e- 20
 4 AK    dum1              -0.245     0.304     -0.806 4.21e-  1
 5 AK    dum2              -0.321     0.304     -1.06  2.90e-  1
 6 AK    dum3               0.0947    0.303      0.312 7.55e-  1
 7 AL    (Intercept)       -1.75      0.294     -5.97  3.28e-  9
 8 AL    us_wage_growth   996.       23.6       42.2   1.82e-228
 9 AL    lag_wage_growth    0.191     0.0205     9.34  5.58e- 20
10 AL    dum1              -0.245     0.304     -0.806 4.21e-  1
# ... with 308 more rows

1 Ответ

0 голосов
/ 27 декабря 2018

Это потому, что вы используете те же данные в вашем do() вызове.Попробуйте:

state_data = stuben_dat %>%
        group_by(st) %>% 
        do(state_wg = lm(wage_growth ~ us_wage_growth + lag_wage_growth +
                                 dum1 + dum2 + dum3,
                         data = ., subset = (yr >= (current_year - 5))))
...