mi problema es este: Obtuve NA
donde debería obtener algunos valores en el cálculo de errores estándar robustos.Regresión de datos del panel: Errores estándar robustos
Estoy tratando de hacer una regresión del panel de efectos fijo con errores estándar robustos. Para esto, sigo Arai (2011) que en la p. 3 sigue a Stock/ Watson (2006) (más tarde publicado en Econometrica, para aquellos que tienen acceso). Me gustaría corregir los grados de libertad por (M/(M-1)*(N-1)/(N-K)
contra el sesgo a la baja ya que mi número de conglomerados es finito y tengo datos desequilibrados.
Problemas similares han sido publicados antes [1, 2] en StackOverflow y problemas relacionados [3] en CrossValidated.
Arai (y la respuesta en la primera link) utiliza el siguiente código para funciones (proporciono mis datos a continuación con un poco más comentarios):
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) }
, donde el gcenter
calcula las desviaciones de la media (efecto fijo). Luego continúo y realizo la regresión con DS_CODE
siendo mi variable de clúster (he nombrado mis datos 'datos').
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))
y desea calcular
clx(datalm, dfcw, data$DS_CODE)
Sin embargo, cuando quiero calcular uj (véase la fórmula clx
arriba) para la varianza, consigo solamente al principio algunos valores para mis regresores, luego muchos ceros. Si se usa esta entrada uj para la varianza, solo NAs
resultado.
Mis datos
Desde mis datos pueden ser de estructura especial y no puedo averiguar el problema, puedo publicar toda la cosa como un link desde Hotmail. La razón es que con otros datos (tomados de Arai (2011)) mi problema no ocurre. Lo siento de antemano por el desastre, pero estaría muy agradecido si pudiera echarle un vistazo, sin embargo. El archivo es un archivo .txt de 5mb que contiene solo datos.
de Arai ya no existe en su enlace. ¿Puedes proporcionar el enlace real? – MERose