ENH: Add Hausman specification test
This adds the Hausman specification test, commonly used to choose between a fixed effects model and a random effects model. The function includes the options include_constant, sigmamore, and sigmaless - which mirrors Stata.
I haven't updated the documentation, but will be happy to do so if you want.
The function calculating an alternative covariance can perhaps be removed and replaced with adding a parameter to the covariance estimation.
I realize there is already a wu_hausman method for testing exogeneity in IV models, but I could not find a way to re-use it. Maybe the mathematics could be extracted into a shared function. Also I guess I should make the naming consistent.
Finally, I have written tests, but they do not look at the actual numerical results. Do you generally generate these using Stata and then test against them?
Codecov Report
Merging #249 (3bf7264) into main (556bde7) will decrease coverage by
0.05%. The diff coverage is100.00%.
@@ Coverage Diff @@
## main #249 +/- ##
==========================================
- Coverage 99.44% 99.38% -0.06%
==========================================
Files 88 88
Lines 15557 15647 +90
Branches 1528 1540 +12
==========================================
+ Hits 15470 15551 +81
- Misses 38 41 +3
- Partials 49 55 +6
| Impacted Files | Coverage Δ | |
|---|---|---|
| linearmodels/panel/results.py | 97.76% <100.00%> (-1.99%) |
:arrow_down: |
| linearmodels/tests/panel/_utility.py | 100.00% <100.00%> (ø) |
|
| linearmodels/tests/panel/test_results.py | 100.00% <100.00%> (ø) |
|
| linearmodels/panel/model.py | 97.80% <0.00%> (+0.02%) |
:arrow_up: |
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact),ø = not affected,? = missing dataPowered by Codecov. Last update 556bde7...3bf7264. Read the comment docs.
Should this be a method attached to a RandomEffectsResults class? This would likely simplify the calculations and logic. It also makes sure that we aren't trying to compare invalid models (e.g. a 2-way FE model with a RE model).
That's a good idea, I've moved it to a method.
I'm trying to generate test data using Stata, but the generated .do-file uses a stats command that I cannot find. Could you point me in the right direction?
I will keep a big eye on this issue. Hausman tests for FE and RE deserves a add! Currently I need to calculate by myself based on the estimates of FE and RE.
I have now added tests against pre-calculated values from Stata. Let me know if anything needs to be changed/added!