Wenn ich eine Cluster-Standard-Fehlerfeldspezifikation mit plm
und lfe
ausführen, erhalte ich Ergebnisse, die sich bei der zweiten signifikanten Zahl unterscheiden. Weiß jemand, warum sie sich in ihrer Berechnung der SE's unterscheiden?Geclusterte Standardfehler in Plm vs Lfe
set.seed(572015)
library(lfe)
library(plm)
library(lmtest)
# clustering example
x <- c(sapply(sample(1:20), rep, times = 1000)) + rnorm(20*1000, sd = 1)
y <- 5 + 10*x + rnorm(20*1000, sd = 10) + c(sapply(rnorm(20, sd = 10), rep, times = 1000))
facX <- factor(sapply(1:20, rep, times = 1000))
mydata <- data.frame(y=y,x=x,facX=facX, state=rep(1:1000, 20))
model <- plm(y ~ x, data = mydata, index = c("facX", "state"), effect = "individual", model = "within")
plmTest <- coeftest(model,vcov=vcovHC(model,type = "HC1", cluster="group"))
lfeTest <- summary(felm(y ~ x | facX | 0 | facX))
data.frame(lfeClusterSE=lfeTest$coefficients[2],
plmClusterSE=plmTest[2])
lfeClusterSE plmClusterSE
1 0.06746538 0.06572588
Prüfungs 'multiwayvcov :: cluster.vcov' es ist leicht zu sehen, die Algebra verwendet, um die Stata kleine Probe Freiheitsgrade Korrektur zu erhalten, nämlich: '(df $ M/(df $ M - 1)) * ((df $ N - 1)/(df $ N - df $ K)) '. Aber was wäre die äquivalente df-Korrektur, wie sie verwendet wird? Sandwich (..., adjust = TRUE)? In [dieser Antwort] (http://stackoverflow.com/questions/27367974/) erklärst du, dass der Unterschied zwischen den beiden ist, dass für Stata die Division durch "1/(n - 1)" und für "Sandwich" ist es ist durch '1/(n - k)'. Aber ich bin mir nicht sicher, wie sich das in eine angemessene Algebra übersetzt ... Ersetze ich '(df $ N - 1)' durch '(df $ N - df $ K)'? – landroni
Ich denke schon, aber habe den Code nicht im Detail überprüft. Beachten Sie auch, dass derzeit "Sandwich" selbst keine standardmäßigen Clusterfehler bietet. Alle theoretischen Details hinter dem 'Sandwich'-Paket sind auch in den zwei Vignetten dokumentiert. –