7 votos

Replicar los resultados de Blundell y Bond (2000) utilizando R

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:

  1. ¿Estoy especificando mal (probablemente - mi primer intento con gmm) o simplemente estamos viendo los resultados de diferentes maquinarias?
  2. ¿Qué podría explicar los resultados de las pruebas de diagnóstico, que parecen decir que los modelos SYS-GMM no son válidos?
  3. ¿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

3voto

wgthom Puntos 234

3. Cómo recuperamos los parámetros a partir de las estimaciones de la función de producción (RESPUESTA INCOMPLETA - se actualizará con la forma de hacer esto en R una vez que tenga tiempo para averiguarlo, o si alguien más lo sabe...)

Blundell y Bond no están estimando los parámetros de una función de producción Cobb-Douglas. Están estimando los parámetros de una "representación dinámica (factor común)" de una función de producción, concretamente:

$(1) \ \ y_{it} = \beta_n n_{i,t} - \rho \beta_n n_{i,t-1} + \beta_k k_{i,t} - \rho \beta_k k_{i,t} + \rho y_{i,t-1} + (\gamma_t - \rho \gamma_{t-1}) + (\eta_i(1-\rho) + e_{it} + m_{it} - \rho m_{i,t-1})$

...que obtienen cuasi-diferenciando su función de producción y haciendo algo raro con el $v_{it}$ término (no se muestra arriba). Cambiando los símbolos, lo reescriben como

$(2) \ \ y_{it} = \pi_1n_{it} + \pi_2 n_{i,t-1} + \pi_3 k_{it} + \pi_4 k_{i,t-1} + \pi_5 y_{i,t-1} + \gamma^*_t + (\eta^*_i +w_{it})$

Donde el * presumiblemente indica valores de estado estacionario, pero de nuevo, desearía tener acceso a un profesor para que me explique precisamente por qué escriben eso. De todos modos, lo que su estimador SYS-GMM devuelve es un vector de valores de los parámetros $\boldsymbol{\pi} = (\pi_1,...,\pi_5)'$ . Ahora tenemos que usar esto para obtener el vector de parámetros $\boldsymbol{\theta} = (\beta_n,\beta_k,\rho)$ .

El único lugar donde puedo encontrar una explicación de cómo se hace eso es este documento aplicando el SYS-GMM a Cuba. Se refieren a Woolridge 2002 (no lo tengo), y afirman que se puede considerar el problema como definido por la relación $\boldsymbol{\pi} = h(\boldsymbol{\theta})$ . Tenemos $\boldsymbol{\pi}$ necesitamos $\boldsymbol{\theta}$ y tendremos que emplear alguna función h() para hacer el enlace. Parece que h() se toma como una instancia de una clase general de estimadores de distancia mínima, y podemos (según Woolridge 2002, aparentemente) resolver el problema resolviendo:

$min (\boldsymbol{\theta}) = (\hat{\pi}-h(\theta))'\Omega(\hat{\pi}-h(\theta)) $

donde $\Omega$ es una función de ponderación. Y de nuevo, aparentemente $\Omega$ debe elegirse como la varianza de la matriz de parámetros, obtenida por "el método delta".

...pero ahora la cosa se pone confusa, porque aunque es fácil encontrar información sobre el método delta en internet, la matriz de parámetros incluye las incógnitas $\boldsymbol{\theta}$ . Supongo que la forma de abordar esto es multiplicar todo y enchufar en optim Utilizando alguna elección arbitraria sobre los valores de partida (¿participaciones de los factores de salida, si se valora en $?). Actualizaré si tengo la oportunidad de probarlo...

Al pasar de la ecuación (1) a la (2) es bastante obvio que:

$$h(\beta_n,\beta_k,\rho) = \begin{pmatrix} \beta_n \\ - \rho \beta_n \\ \beta_k \\ - \rho \beta_k \\ \rho \end{pmatrix}= \begin{pmatrix} \pi_1 \\ \pi_2 \\ \pi_3 \\ \pi_4 \\ \pi_5 \end{pmatrix},$$

y $$\Omega = var(\pi)$$

2 votos

He añadido la función $h()$ a su puesto. Si no estás de acuerdo simplemente borra. Woolridge (2002) i disponible en línea aquí .

2 votos

La distancia mínima se discute en la página 442 en el capítulo sobre GMM. Los errores estándar requieren que se calcule $\partial h(\theta)/\partial \theta$ siendo un $5 \times 3$ matriz en este caso.

1 votos

@JesperHybel gracias por el enlace a Wooldridge. Sí, eso es h() y omega AFAIK. El problema es cómo ponerlo todo junto en R. Hay una función de stata [aquí] ( soderbom.net/Recursos.htm ) para los que leen stata. Mirando esto de nuevo hoy, creo que me estoy perdiendo algo fundamental sobre cómo se recuperan los parámetros estructurales de los modelos de forma reducida en economía.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X