mein Problem ist das: Ich bekomme NA
, wo ich einige Werte bei der Berechnung von robusten Standardfehler erhalten sollte.Panel Daten Regression: Robuste Standardfehler
Ich versuche eine Fixed-Panel-Regression mit Cluster-robusten Standardfehlern zu machen. Dazu folge ich Arai (2011) wer auf p. 3 folgt Stock/ Watson (2006) (später veröffentlicht in Econometrica, für diejenigen, die Zugang haben). Ich möchte die Freiheitsgrade durch (M/(M-1)*(N-1)/(N-K)
gegen Abwärts-Bias korrigieren, da meine Anzahl von Clustern endlich ist und ich unausgewogene Daten habe.
Ähnliche Probleme wurden vor [1, 2] auf StackOverflow und verwandten Problemen [3] auf CrossValidated geschrieben.
Arai (und die Antwort in dem ersten Link) verwendet den folgenden Code für Funktionen (ich meine Daten unten mit einigem weiteren Kommentar zur Verfügung stellen):
gcenter <- function(df1,group) {
variables <- paste(
rep("C", ncol(df1)), colnames(df1), sep=".")
copydf <- df1
for (i in 1:ncol(df1)) {
copydf[,i] <- df1[,i] - ave(df1[,i], group,FUN=mean)}
colnames(copydf) <- variables
return(cbind(df1,copydf))}
# 1-way adjusting for clusters
clx <- function(fm, dfcw, cluster){
# R-codes (www.r-project.org) for computing
# clustered-standard errors. Mahmood Arai, Jan 26, 2008.
# The arguments of the function are:
# fitted model, cluster1 and cluster2
# You need to install libraries `sandwich' and `lmtest'
# reweighting the var-cov matrix for the within model
library(sandwich);library(lmtest)
M <- length(unique(cluster))
N <- length(cluster)
K <- fm$rank
dfc <- (M/(M-1))*((N-1)/(N-K))
uj <- apply(estfun(fm),2, function(x) tapply(x, cluster, sum));
vcovCL <- dfc*sandwich(fm, meat=crossprod(uj)/N)*dfcw
coeftest(fm, vcovCL) }
, wo die gcenter
Abweichungen vom Mittelwert berechnet (fester Effekt). Ich fahre dann fort und mache die Regression mit DS_CODE
meine Cluster-Variable (ich habe meine Daten 'Daten' genannt).
centerdata <- gcenter(data, data$DS_CODE)
datalm <- lm(C.L1.retE1M ~ C.MCAP_SEC + C.Impact_change + C.Mom + C.BM + C.PD + C.CashGen + C.NITA + C.PE + C.PEdummy + factor(DS_CODE), data=centerdata)
M <- length(unique(data$DS_CODE))
dfcw <- datalm$df/(datalm$df - (M-1))
und wollen
clx(datalm, dfcw, data$DS_CODE)
jedoch berechnen, als ich uj (siehe Formel clx
oben) für die Varianz berechnen will, muss ich einige Werte für meine Regressoren erst am Anfang bekommen, dann viele Nullen. Wenn dieser Eingang uj für die Varianz verwendet wird, wird nur NAs
angezeigt.
Meine Daten
Da meine Daten von spezieller Struktur sein können, und ich kann das Problem nicht herausfinden, poste ich die ganze Sache als link von Hotmail. Der Grund ist, dass mit anderen Daten (aus Arai (2011)) mein Problem nicht auftritt. Sorry im Voraus für das Chaos, aber ich wäre sehr dankbar, wenn Sie es trotzdem sehen könnten. Die Datei ist eine 5 MB-TXT-Datei, die reine Daten enthält.
Arais Papier nicht mehr unter dem Link vorhanden sein. Können Sie den tatsächlichen Link angeben? – MERose