Quiero replicar la Tabla III de Blundell y Bond (2000) en R. Estoy usando la función pgmm
del paquete plm
que (aparentemente) replica el enfoque de Stata xtabond2
(Roonman, 2009). Las estimaciones que obtengo son cualitativamente similares, pero no iguales, la prueba de correlación serial de Arellano-Bond sugiere que las condiciones de momento son inválidas.... y me entristece decir que aún no veo cómo recuperar los coeficientes de la función de producción.
Los autores de plm
tienen un útil libro de texto complementario: Millo y Croissant 2018 Panel Data Econometrics in R. Obtengo los datos de allí (paquete asociado pder), y sigo la sección 7.5 para la configuración y los diagnósticos. Aquí hay un ejemplo autocontenido:
library(plm)
library(pder) # contains the Blundell and Bond dataset
#detach(package:dplyr) # if loaded, dplyr::lag masks plm::lag
data('RDPerfComp')
str(RDPerfComp) #n.b. - variables already in logs (see ?RDPerfComp)
Y ahora reproducimos algunas de las columnas de la Tabla 3 de Blundell y Bond 2000:
# "OLS levels"
ols<-plm(y~lag(y,1) + lag(n,0:1) + lag(k,0:1),
data=RDPerfComp, index=c("id","year"),
effect="twoways", model = "pooling")
summary(ols)
# "Within groups"
within_groups<-plm(y~lag(y,1) + lag(n,0:1) + lag(k,0:1),
data=RDPerfComp, index=c("id","year"),
effect="twoways", model = "within")
summary(within_groups)
# "SYS t-2"
sys_t2<-pgmm(
y ~ lag(y,1) + lag(n,0:1) + lag(k,0:1) |
lag(y,2:99) + lag(n,2:99) + lag(k,2:99),
data=RDPerfComp, index=c("id","year"),
effect="twoways",model="onestep",
transformation="ld"
)
summary(sys_t2,robust=TRUE,time.dummies=FALSE) # both options can be provided directly in pgmm()
# "SYS t-3"
sys_t3<-pgmm(
y ~ lag(y,1) + lag(n,0:1) + lag(k,0:1) |
lag(y,3:99) + lag(n,3:99) + lag(k,3:99),
data=RDPerfComp, index=c("id","year"),
effect="twoways",model="onestep",
transformation="ld"
)
summary(sys_t3,robust=TRUE)
Los resultados son muy similares para el modelo OLS combinado, casi idénticos para el modelo de efectos fijos/dentro del modelo, y sólo "cualitativamente similares" (magnitudes, signos) para los modelos SYS-GMM, con algunas excepciones (notable la estimación del coeficiente y_t-1). Más preocupante es que la prueba de Sargan-Hansen parece rechazar la nulidad de instrumentos válidos para ambos modelos SYS-GMM:
sargan(sys_t2) # same statistic as reported by summary()
sargan(sys_t3)
...y la prueba de la condición de momento de Arellano-Bond parece rechazar la nulidad de la no correlación serial, sugiriendo que las condiciones de momento son inválidas
mtest(sys_t2) # you can make this robust using vcovc =
mtest(sys_t3)
Así que mis preguntas:
- ¿Estoy especificando mal (probablemente - mi primer intento con gmm) o simplemente estamos viendo los resultados de diferentes maquinarias?
- ¿Qué podría explicar los resultados de las pruebas de diagnóstico, que parecen decir que los modelos SYS-GMM no son válidos?
- ¿Cómo obtenemos Beta_n, Beta_k y rho (los parámetros de la función de producción, como se indica en el panel central de la Tabla III) a partir de estos resultados? (EDIT: OK, como se indica en el documento, a través de la prueba y la imposición de las restricciones de los coeficientes utilizando "un estimador de distancia mínima" ver eq'n 2.3 y el texto a continuación en el documento original)
(sí, son preguntas de tipo "avanzado", no es un trabajo de curso)
0 votos
Buena suerte. Dado que ha acertado los números "dentro del modelo" casi exactamente, es sorprendente que no lo haya hecho tan bien en lo que debería ser el modelo OLS más simple. Para aquellos que no puedan acceder a Blundell y Bond (2000) tras un muro de pago, su anterior Publicación IFS 1998 está fácilmente disponible, con los coeficientes que está tratando de replicar en la Tabla 2
0 votos
...¿se sabe que esto es una tontería que se intenta hacer, y si es así se puede aclarar por qué?
3 votos
No - esto es algo muy bueno para tratar de hacer. R es libre y Stata no, así que ser capaz de replicar los resultados de Stata en R es un ejercicio admirable
0 votos
Vi un comentario en alguna parte (perdí la pista) que sugería que había problemas con el código utilizado en el artículo original del año 2000, de manera que la replicación podría ser difícil. El punto de intentar hacerlo es sólo para aprender sobre el enfoque SYS-GMM a las funciones de producción.
0 votos
¿Eres capaz de replicar las tablas de su artículo en stata? Intenté hacerlo pero no pude, tal vez me equivoqué, pero tal vez sí tuvieron algún problema con el código utilizado en su artículo original
0 votos
Ejecuta el script que he colgado arriba y a ver qué te parece. A mí me parece bien, pero esperaba estar más cerca en las estimaciones del SYS-GMM, ya que
plm::pgmm
pretende ser un puerto de R de la herramienta de Stataxtabond2
.0 votos
Yo esperaría que se obtuvieran estimaciones erróneas en la réplica OLS (pero no estoy del todo seguro). Usando el lag(y,1) en la fórmula me sorprendería que fuera realmente lag(y,1) por ID que es lo que quieres.