Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fixed-effect OLS regression for panel data with 3+ panel dimensions

    Hello,

    I want to know how to OLS regress panel data with fixed-effect, when more than 2 dimensions are defining the panel.

    Dataset
    I have a dataset mocked below that contains panel data across 3 dimensions: year (temporal), as well as specie and observer (which are independent categorical variables). I.e. on each year, each observer has reported the count and (average) size of each specie.

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input int year str11 specie str7 observer byte count float size
    2010 "Anchovie"    "Alice"    98  69.97352
    2010 "Anchovie"    "Bob"      98 32.766758
    2010 "Anchovie"    "Charlie"  12 11.658455
    2010 "Beaver"      "Alice"    57 19.060453
    2010 "Beaver"      "Bob"      54 .04540863
    2010 "Beaver"      "Charlie"  97  94.63239
    2010 "Caterpillar" "Alice"     6 3.7774425
    2010 "Caterpillar" "Bob"       0         0
    2010 "Caterpillar" "Charlie"  42  32.16354
    2010 "Deer"        "Alice"    83  53.52138
    2010 "Deer"        "Bob"       4 1.3835385
    2010 "Deer"        "Charlie"  86  77.69691
    2011 "Anchovie"    "Alice"    10 1.3469838
    2011 "Anchovie"    "Bob"      10   6.67327
    2011 "Anchovie"    "Charlie"  15  13.41947
    2011 "Beaver"      "Alice"    82  38.37632
    2011 "Beaver"      "Bob"       1  .4180519
    2011 "Beaver"      "Charlie"  35 19.670977
    2011 "Caterpillar" "Alice"    18  1.374207
    2011 "Caterpillar" "Bob"      58  41.45398
    2011 "Caterpillar" "Charlie"  16  10.51918
    2011 "Deer"        "Alice"    48 30.710747
    2011 "Deer"        "Bob"      44 15.254408
    2011 "Deer"        "Charlie" 100 13.260367
    2012 "Anchovie"    "Alice"     0         0
    2012 "Anchovie"    "Bob"      23  6.768587
    2012 "Anchovie"    "Charlie"  96  25.88619
    2012 "Beaver"      "Alice"    88  59.88318
    2012 "Beaver"      "Bob"      18  3.859546
    2012 "Beaver"      "Charlie"  36  27.21044
    2012 "Caterpillar" "Alice"    29 20.154434
    2012 "Caterpillar" "Bob"      41 22.805317
    2012 "Caterpillar" "Charlie"  43  22.87975
    2012 "Deer"        "Alice"    71  47.48964
    2012 "Deer"        "Bob"       0         0
    2012 "Deer"        "Charlie"  63  38.72793
    2013 "Anchovie"    "Alice"    65  47.36024
    2013 "Anchovie"    "Bob"      21 12.862803
    2013 "Anchovie"    "Charlie"  98  81.47609
    2013 "Beaver"      "Alice"    90  81.25338
    2013 "Beaver"      "Bob"      30 29.611444
    2013 "Beaver"      "Charlie"  28  18.24471
    2013 "Caterpillar" "Alice"    53 34.682957
    2013 "Caterpillar" "Bob"       4  .4044559
    2013 "Caterpillar" "Charlie"  28 23.134344
    2013 "Deer"        "Alice"    33 12.742416
    2013 "Deer"        "Bob"      68  67.77893
    2013 "Deer"        "Charlie"  54 2.1096578
    2014 "Anchovie"    "Alice"    43 17.796349
    2014 "Anchovie"    "Bob"      23  9.286314
    2014 "Anchovie"    "Charlie"  35  21.72264
    2014 "Beaver"      "Alice"    49  15.02113
    2014 "Beaver"      "Bob"       0         0
    2014 "Beaver"      "Charlie"  77  5.291418
    2014 "Caterpillar" "Alice"    46 28.128736
    2014 "Caterpillar" "Bob"      22 16.836308
    2014 "Caterpillar" "Charlie"  96  81.99249
    2014 "Deer"        "Alice"    80 35.820347
    2014 "Deer"        "Bob"      36  18.96105
    2014 "Deer"        "Charlie"  36  4.982587
    2015 "Anchovie"    "Alice"    14  5.368907
    2015 "Anchovie"    "Bob"      22 13.315876
    2015 "Anchovie"    "Charlie"  80 18.309069
    2015 "Beaver"      "Alice"    92 25.678885
    2015 "Beaver"      "Bob"      48  20.29379
    2015 "Beaver"      "Charlie"  55  49.40905
    2015 "Caterpillar" "Alice"    41 27.920774
    2015 "Caterpillar" "Bob"      65 26.987574
    2015 "Caterpillar" "Charlie"  10 1.2208078
    2015 "Deer"        "Alice"    37  4.282799
    2015 "Deer"        "Bob"      45  33.59572
    2015 "Deer"        "Charlie"  62  9.016172
    2016 "Anchovie"    "Alice"     1  .9934739
    2016 "Anchovie"    "Bob"      94  36.00561
    2016 "Anchovie"    "Charlie"  38   7.68219
    2016 "Beaver"      "Alice"    60  48.01498
    2016 "Beaver"      "Bob"      84  44.79958
    2016 "Beaver"      "Charlie"  11  5.028427
    2016 "Caterpillar" "Alice"    72  51.12494
    2016 "Caterpillar" "Bob"      36 12.705547
    2016 "Caterpillar" "Charlie"  17 14.800262
    2016 "Deer"        "Alice"    28 15.861224
    2016 "Deer"        "Bob"      49 24.369453
    2016 "Deer"        "Charlie"  49  38.53837
    2017 "Anchovie"    "Alice"    39  23.66544
    2017 "Anchovie"    "Bob"      64  38.87928
    2017 "Anchovie"    "Charlie"  64 36.107174
    2017 "Beaver"      "Alice"    76  73.23235
    2017 "Beaver"      "Bob"      74  50.15491
    2017 "Beaver"      "Charlie" 100 10.102198
    2017 "Caterpillar" "Alice"    46  5.233415
    2017 "Caterpillar" "Bob"      28 27.837124
    2017 "Caterpillar" "Charlie"  17 2.9475856
    2017 "Deer"        "Alice"    22  7.284397
    2017 "Deer"        "Bob"      55  4.100322
    2017 "Deer"        "Charlie"  64  21.89705
    2018 "Anchovie"    "Alice"    89  55.62903
    2018 "Anchovie"    "Bob"      55  40.11375
    2018 "Anchovie"    "Charlie"  25 20.121956
    2018 "Beaver"      "Alice"    70 13.271093
    2018 "Beaver"      "Bob"      28 17.943098
    2018 "Beaver"      "Charlie"  89  79.80712
    2018 "Caterpillar" "Alice"    94  48.44288
    2018 "Caterpillar" "Bob"      60  21.88108
    2018 "Caterpillar" "Charlie"  16  9.971855
    2018 "Deer"        "Alice"    88  2.622402
    2018 "Deer"        "Bob"       2  .6319003
    2018 "Deer"        "Charlie"  41  2.404092
    2019 "Anchovie"    "Alice"    74  37.69833
    2019 "Anchovie"    "Bob"       5 1.8495693
    2019 "Anchovie"    "Charlie"  49 35.447426
    2019 "Beaver"      "Alice"    58 17.566992
    2019 "Beaver"      "Bob"      61  39.27077
    2019 "Beaver"      "Charlie"  73  40.09311
    2019 "Caterpillar" "Alice"    23 13.877348
    2019 "Caterpillar" "Bob"      15 12.655438
    2019 "Caterpillar" "Charlie"  55  35.99815
    2019 "Deer"        "Alice"    36  31.71533
    2019 "Deer"        "Bob"       6  3.630006
    2019 "Deer"        "Charlie"  83 21.364994
    2020 "Anchovie"    "Alice"    43 32.283325
    2020 "Anchovie"    "Bob"       0         0
    2020 "Anchovie"    "Charlie"  59 12.265055
    2020 "Beaver"      "Alice"    68  45.07475
    2020 "Beaver"      "Bob"      37   1.69084
    2020 "Beaver"      "Charlie"  18 4.1585655
    2020 "Caterpillar" "Alice"    77  74.63856
    2020 "Caterpillar" "Bob"      83  26.62211
    2020 "Caterpillar" "Charlie"  99  6.484401
    2020 "Deer"        "Alice"    39  16.99574
    2020 "Deer"        "Bob"      15  7.349376
    2020 "Deer"        "Charlie"  94  92.99251
    end
    Problem
    So far, I have been running “OLS regression with fixed-effects” using i.<categorical> as independent variables for the fixed-effect (leaving aside the clustering of standard errors):

    Code:
    * Encode categorical variables
    encode specie , generate(specie_id)
    encode observer , generate(observer_id)
    
    * 1/ Regression with no fixed-effect
    regress count size
    
    * 2/ Regression with Year fixed-effect
    regress count size c.year
    
    * 3/ Regression with Specie fixed-effect
    regress count size i.specie_id
    
    * 4/ Regression with Year & Specie fixed-effect
    regress count size c.year i.specie_id
    
    * 5/ Regression with Year & Specie & Observer fixed-effect
    regress count size c.year i.specie_id i.observer_id
    However, I gather this is not the correct way of calculating fixed-effect with panel data.
    I have thus started porting my regressions to xtreg. I have been able to replicate regressions 1–3 as follows:

    Code:
    * 1/ Regression with no fixed-effect
    regress count size
    
    * 2/ Regression with Year fixed-effect
    xtset year
    xtreg count size, fe
    
    * 3/ Regression with Specie fixed-effect
    xtset specie_id
    xtreg count size, fe
    However, I struggle with scenarii 4 and 5. Indeed, the following command fail:

    Code:
    * 4/ Regression with Year & Specie fixed-effect
    xtset specie_id year
    
    // repeated time values within panel
    // r(451);
    As for case 5, -help xtset- mention only 1 panelvar (singular) in addition to timevar, so I fully expect -xtset specie_id observer_id year- to fail too.

    Question
    How to run an OLS regression with the following fixed-effects, when the data are panelled on 3 dimensions (1 temporal + 2 categorical):
    1. temporal & categorical_1,
    2. temporal & categorical_1 & categorical_2?

    System
    I am using Stata 17.0 MP.

  • #2
    Code:
    ssc install reghdfe
    include all FE in the absorb() option

    Comment


    • #3
      I was first worried it didn't mention panel data… but the documentation makes very clear it's a generalization of both areg and xtreg.
      So, thank you very much — it is spot on what I was looking for!

      Comment

      Working...
      X