Sto usando lfe
e fixest
per eseguire regressioni con effetti fissi ad alta dimensione. Per queste regressioni, vorrei raggruppare gli errori standard in base a diverse dimensioni (ad es. Prodotto, destinazione e ora). Tuttavia, sono confuso sulla sintassi e su come differisce tra i comandi felm
e feols
. Il clustering nei due modelli seguenti sarebbe equivalente?
EDIT: ho eseguito i due modelli e ho scoperto che m2 ha errori standard maggiori di 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)
Commenti
- Forse provare e vedere? Se ottieni risultati diversi, modificali nella tua domanda.
Risposta
In realtà non esiste un unico modo per calcolare gli errori standard. Il modo in cui vengono calcolati in fixest
e il confronto con lfe
sono spiegati in questo vignetta .
Cerano anche un paio di bug ( minori ) negli SE nella fixest
versione < 0.6.0 rendendo gli SE leggermente diversi.
Ecco “un confronto correlato al tuo esempio con i dati del giocattolo:
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