AnovaFixedEffectModels

using AnovaFixedEffectModels

AnovaFixedEffectModels.jl supports FixedEffectModels.

lfe is as same as reg, but the order of arguments is closer to other modeling packages.

fem1 = lfe(@formula(gpa ~ fe(student) + occasion + job), gpa)
aovf = anova(fem1)
Analysis of Variance

Type 1 test / F test

gpa ~ :(fe(student)) + occasion + job

Table:
──────────────────────────────────────────────────────────
             DOF   Exp.SS  Mean Square   F value  Pr(>|F|)
──────────────────────────────────────────────────────────
occasion       1  39.56        39.56    718.3393    <1e-99
job            1   3.0698       3.0698   55.7420    <1e-12
(Residuals)  998  54.96         0.0551              
──────────────────────────────────────────────────────────

Comparing between FixedEffectModelss and LinearModel is also available.

fems = nestedmodels(FixedEffectModel, @formula(gpa ~ fe(student) + occasion + job), gpa)
aovf = anova(fems)
Analysis of Variance

Type 1 test / F test

Model 1: gpa ~ 0 + :(fe(student))
Model 2: gpa ~ 0 + occasion + :(fe(student))
Model 3: gpa ~ :(fe(student)) + occasion + job

Table:
─────────────────────────────────────────────────────────────────────────────────────────────────
   DOF  ΔDOF  Res.DOF      R²     ΔR²  R²_within  ΔR²_within  Res.SS   Exp.SS   F value  Pr(>|F|)
─────────────────────────────────────────────────────────────────────────────────────────────────
1  200            998  0.4731            <1e-14                97.59                       
2  201     1      998  0.6867  0.2136     0.4054      0.4054   58.03  39.56    718.3393    <1e-99
3  202     1      998  0.7033  0.0166     0.4368      0.0315   54.96   3.0698   55.7420    <1e-12
─────────────────────────────────────────────────────────────────────────────────────────────────

In this case, LinearModel has to be the simplest model.

aovf = anova(lm(@formula(gpa ~ occasion + job), gpa), lfe(@formula(gpa ~ fe(student) + occasion + job), gpa))
Analysis of Variance

Type 1 test / F test

Model 1: gpa ~ 1 + occasion + job
Model 2: gpa ~ :(fe(student)) + occasion + job

Table:
─────────────────────────────────────────────────────────────
   DOF  ΔDOF  Res.DOF  Deviance  ΔDeviance  F value  Pr(>|F|)
─────────────────────────────────────────────────────────────
1    3           1197    124.99                        
2  202   199      998     54.96      70.03   6.3905    <1e-87
─────────────────────────────────────────────────────────────

Likelihood-ratio test is available for nested models.

fems = nestedmodels(FixedEffectModel, @formula(gpa ~ fe(student) + occasion + job), gpa)
anova(LRT, fems)
Analysis of Variance

Type 1 test / Likelihood-ratio test

Model 1: gpa ~ 0 + :(fe(student))
Model 2: gpa ~ 0 + occasion + :(fe(student))
Model 3: gpa ~ :(fe(student)) + occasion + job

Table:
────────────────────────────────────────────────────
   DOF  ΔDOF  Res.DOF  Deviance        χ²  Pr(>|χ²|)
────────────────────────────────────────────────────
1  200           1000    394.29               
2  201     1      999   -229.48  623.7685     <1e-99
3  202     1      998   -294.70   65.2196     <1e-15
────────────────────────────────────────────────────