AlexML
AlexML

Reputation: 13

Multiple LM model returning the same coefficients

Hello Stack Community,

I am trying to model wage growth across US territories using linear models to forecast into the future. I want to try and create a model for each state/ territory (DC, VI, and PR), however, when I look at the coefficients for my models, they are the same for each state.

I have used a combination of plyr ,dplyr, and broom thus far to create and sort my data frame (named stuben_dat) for this project

#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

Here is just a snapshot of my output, and as you can see, the beta coefficients and regression statistics are exactly the same for each state (Just AK and AL) are shown here. However, I want to build a different model for each state.

# 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

Upvotes: 1

Views: 52

Answers (1)

nghauran
nghauran

Reputation: 6768

It is because you are using the same data in your do() call. Try out:

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))))

Upvotes: 1

Related Questions