Simulando el ciclo económico real

10

Básicamente, necesito replicar la 'Guía del usuario de Hartley para resolver modelos reales de ciclos comerciales' ( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ). Específicamente, quiero simular el sistema dinámico implícito en el modelo que se especifica de la siguiente manera:

ingrese la descripción de la imagen aquí

donde es consumo, es mano de obra, es capital, es el proceso tecnológico autorregresivo, es el producto e es la inversión.h k z y ichkzyi

Lo simulo usando la siguiente lógica: digamos que en el tiempo , todo está en estado estable y todos los valores son 0, de los cuales tenemos . Luego, en dando una descarga al sistema a través de , y (ya que obtuve el 'shock' y obtuve previamente . Luego, conecto esos dos para recuperar el resto, a saber: y repito el proceso.k t + 1 t + 1 ε c t + 1 h t + 1 z t + 1 k t + 1 y t + 1 , i t + 1 , k t + 2tkt+1t+1εct+1ht+1zt+1kt+1yt+1,it+1,kt+2

Desafortunadamente, obtengo un proceso explosivo que no tiene sentido:

ingrese la descripción de la imagen aquí

También incluyo el código R que se usa para simular esto:

n<-300

data.simulated <- data.table(t = 0, zval = 0, cval = 0, hval = 0, kval = 0, yval = 0, ival = 0)
data.simulated <- rbind(data.simulated, data.table(t = 1, kval = 0), fill = TRUE)

for (ii in 1:n){

  ##initial shocks
  eps <- rnorm(1, mean = 0, sd = 0.007)
  zt1 <- data.simulated[t == ii - 1, zval]*0.95 + eps
  kt1 <- data.simulated[t == ii, kval]

  ##solve for ct, ht
  lmat <- matrix(c(1, -0.54, 2.78, 1), byrow = T, ncol = 2)
  rmat <- matrix(c(0.02 * kt1 + 0.44 * zt1, kt1 + 2.78 * zt1), ncol = 1)

  solution <- solve(lmat, rmat)
  ct1 <- solution[1, ]
  ht1 <- solution[2, ]

  ##now solve for yt1 and kt2 and it1
  yt1 <- zt1 + 0.36 * kt1 + 0.64 * ht1
  kt2 <- -0.07 * ct1 + 1.01 * kt1 + 0.06 * ht1 + 0.1 * zt1
  it1 <- 3.92 * yt1 - 2.92 * ct1

  ##add to the data.table the results
  data.simulated[t == ii, c("zval", "cval", "hval", "yval", "ival") := list(zt1, ct1, ht1, yt1, it1)]
  data.simulated <- rbind(data.simulated, data.table(t = ii + 1, kval = kt2), fill = TRUE)
}


a <- data.simulated[, list(t, cval, ival, yval)]
a <- data.table:::melt.data.table(a, id.vars = "t")
ggplot(data = a, aes(x = t, y = value, col = variable)) + geom_line()

Sí, mi pregunta es simple: ¿el sistema especificado en el documento es inherentemente inestable y ergo los resultados, o cometí un error en alguna parte?

Sarunas
fuente

Respuestas:

6

Explosividad

El documento contiene un error, que causa la dinámica explosiva en su simulación (aunque presumiblemente los cálculos subyacentes en el documento fueron correctos). La condición de equilibrio derivada de la descomposición del valor propio está contenida en la tercera fila de la matriz en la página 12 del documento, con variables ordenadas como (dejaré caer tildas, así que todo las variables en minúsculas deben entenderse como desviaciones logarítmicas). Comparando con la ecuación. (16) en la p. 13, vemos que los coeficientes para y se cambian, por lo que la condición correcta es ( c , k , h , z ) k hQ1(c,k,h,z)kh

ct=0.54kt+0.02ht+0.44zt

Simulación

Primero, podemos expresar el consumo y la mano de obra como función lineal de las variables de estado (no es necesario resolver el sistema en cada paso de la simulación). Las condiciones de equilibrio intertemporal e intratemporal se pueden escribir como

[10.022.781][ctht]=[0.540.4412.78][ktzt]

así que después de multiplicar por un inverso obtenemos

[ctht]=[0.530.470.471.47][ktzt]

A continuación, la transición para los estados se puede escribir como

[kt+1zt+1]=[0.070.0600][ctht]+[1.010.100.95][ktzt]+[0ϵt+1]

que puede reducirse sustituyendo las variables de control por

[kt+1zt+1]=[0.940.1600.95][ktzt]+[0ϵt+1]

Ahora la simulación debería ser trivial, aquí hay un ejemplo de Matlab / Octave:

T = 200;
X = zeros(2,T);
for i=2:T
    X(:,i) = [0.94 0.16; 0 0.95] * X(:,i-1) + [0; 0.007*randn()];
end
Y = [0.53 0.47; -0.47 1.47] * X;
figure
plot(1:T, [X; Y])
legend('k','z','c','h')

Simulación

Por supuesto, en la práctica, probablemente debería volver a calcular la solución completa, incluida la descomposición del valor propio, para poder cambiar los parámetros, etc.

ivansml
fuente
(+1) Quizás sería útil graficar la producción y la inversión, que generalmente también están en el foco de interés (y contribuyen a validar el modelo, cuando la serie de inversión exhibe una mayor variabilidad que la serie de salida).
Alecos Papadopoulos
5

NOTICIAS finales 20 de marzo de 2015 : He enviado un correo electrónico al profesor. K. Salyer, uno de los autores de la Guía del usuario. En una comunicación repetida, verificó que ambos problemas (ver mi respuesta a continuación, así como la respuesta @ivansml) existen:

a) La ecuación correcta para la ley del movimiento del consumo es como muestra @ivansml

b) El número se llama erróneamente "varianza" (p. 11) en el documento. En realidad, es la desviación estándar , y de hecho tal magnitud es un hallazgo típico en los datos (el profesor Salyer hizo referencia a "p. 22 del capítulo 1 de Cooley y Prescott's Frontiers of Business Cycle Research).0.007

Ambos errores se relacionan con la versión impresa del documento. En otras palabras, las simulaciones detrás de la Figura 1 del documento son correctas: usan la ecuación correcta para el consumo y usan como la desviación estándar de la perturbación en el proceso tecnológico. Entonces, es el segundo gráfico a continuación que es válido.0.007


FASE A
Verifiqué mediante simulación (y utilizando la desviación estándar correcta) que el modelo explota, aunque lo hace hacia arriba en lugar de hacia abajo. Debe haber un error de cálculo en el trabajo, que de alguna manera no fue "transmitido" a las simulaciones de los autores. Por el momento no puedo pensar en otra cosa, ya que la metodología es estándar. Estoy intrigado y sigo trabajando en ello.

FASE B
Después de la respuesta de @ ivansml, que identificó un error en el documento (que aparentemente no se cometió en las simulaciones de los autores) , creo que identifiqué un segundo error, esta vez en las simulaciones : y está relacionado con si es una desviación estándar o un valor de varianza. 0.007

Específicamente: Usando el sistema corregido de ecuaciones y una perturbación aleatoria (es decir, como está escrito en el documento ) el siguiente gráfico de la última 120 realizaciones de 3.000 en total: ϵiN(0,σ2=0.007),SD=0.0837ingrese la descripción de la imagen aquí

Tenga en cuenta los valores en el eje vertical: son mucho mayores que el rango de valores que aparece en la Figura 1 en el artículo de los autores.

Pero si genero perturbaciones de acuerdo con , entonces obtengo ϵiN(0,σ2=0.00049),SD=0.007ingrese la descripción de la imagen aquí

Ahora el rango de valores coincide con los que aparecen en el gráfico del artículo. Es posible que la varianza correcta sea y los autores la hayan usado incorrectamente como StDev, pero también puede ser que la varianza correcta sea y la DE correcta sea . Por lo tanto, la simulación fue correcta (en línea con la estimación obtenida), pero por error llamaron en el documento "Varianza" lo que debería llamarse "Desviación Estándar".0.000049 0.0070.0070.0000490.007

Intentaré contactar a los autores sobre estos dos asuntos.

Alecos Papadopoulos
fuente
Me las arreglé para darme cuenta de que el proceso es de hecho explosivo como usted señaló. cometí un error acerca de la varianza, el bus ya que sd es 0.083, lo que significa una variación aún mayor que la que usé inicialmente y el proceso explota mucho más rápido. lo que no entiendo es cómo el autor logró simular (mientras escribe) 3000 observaciones y proporcionar la trama de series estacionarias (al final del artículo) mientras el proceso no exhibe esta propiedad.
Sarunas
@Sarunas Verifique su código de la siguiente manera: calcule manualmente los primeros dos o tres valores de los diversos procesos, utilizando los shocks realmente generados, y compárelos con los valores correspondientes que le proporciona el código.
Alecos Papadopoulos
yo lo hice. Intenté continuar manualmente. Lo que sería útil saber de los investigadores más experimentados es que ¿por qué el proceso de capital sería explosivo? ¿no querríamos que fuera estacionario? ¿De qué otra manera se podría lograr un estado estable? Verifiqué los valores propios del sistema y, como señaló anteriormente, el sistema es de hecho explosivo, por lo que no hay nada de malo en el código. o los errores están en el periódico o no entiendo la lógica.
Sarunas
Muchas gracias por tu esfuerzo. me ayudaste muchísimo! al menos, no fui yo quien cometió el error (fundamentalmente) :)
Sarunas
1
@AlecosPapadopoulos Creo que el coeficiente de capital en la restricción de recursos linealizados puede exceder uno (de hecho, debería ser igual a en este modelo); lo que importa es la estabilidad del proceso una vez que todas las relaciones de equilibrio han sido sustituidas adentro. Si tomo las matrices del papel y las conecto al solucionador de solab de Paul Klein , obtengo una solución estable, por lo que diría que solo hay algún error tipográfico en el papel. (si lo hace usted mismo, tenga cuidado con distinta notación y el orden variable en el código de Klein)( k t , z t ) A , B1/β(kt,zt)A,B
ivansml