Ik gebruik de lfe
en fixest
pakketten om regressies uit te voeren met hoog-dimensionale vaste effecten. Voor deze regressies wil ik de standaardfouten clusteren op basis van verschillende dimensies (bijv. Product, bestemming en tijd). Ik ben echter in de war over de syntaxis en hoe deze verschilt tussen de felm
en feols
opdrachten. Zou de clustering in de volgende twee modellen equivalent zijn?
EDIT: ik heb de twee modellen uitgevoerd en ontdekte dat m2 grotere standaardfouten heeft dan m1.
m1 <- felm(y ~ x1+ x2 | fe1 + fe2|0|product + destination + time, data=df) #with lfe package summary(m1) m2 <- feols(y ~ x1+ x2 | fe1 + fe2, data=df) #with fixest package summary(m2, cluster=~product + destination + time)
Reacties
- Misschien proberen en zien? Als je andere resultaten krijgt, bewerk dat dan in je vraag.
Antwoord
Eigenlijk is er geen enkele manier om bereken de standaardfouten. De manier waarop ze worden berekend in fixest
en hoe ze zich verhouden tot lfe
worden uitgelegd in deze vignette .
Er waren ook een paar ( kleine ) bugs in de SEs in fixest
versie < 0.6.0 waardoor de SEs er iets anders uitzien.
Hier “is een vergelijking gerelateerd aan uw voorbeeld met speelgoedgegevens:
library(fixest) ; library(lfe) data(trade) est_felm = felm(log(Euros) ~ log(dist_km) | Origin + Destination | 0 | Origin + Destination + Year, trade) est_feols = feols(log(Euros) ~ log(dist_km) | Origin + Destination, trade) # Same SEs but different p-values coeftable(est_felm) #> Estimate Cluster s.e. t value Pr(>|t|) #> log(dist_km) -2.072132 0.1516212 -13.66651 2.525297e-07 coeftable(est_feols, cluster = ~ Origin + Destination + Year) #> Estimate Std. Error t value Pr(>|t|) #> log(dist_km) -2.072132 0.1516212 -13.66651 2.024366e-42 # Same SEs and p-values (t.df is explained in the vignette) coeftable(est_feols, cluster = ~ Origin + Destination + Year, dof = dof(t.df = "min")) #> Estimate Std. Error t value Pr(>|t|) #> log(dist_km) -2.072132 0.1516212 -13.66651 2.525297e-07