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:
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 i
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 + 2
Desafortunadamente, obtengo un proceso explosivo que no tiene sentido:
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?
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 B0.007
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.
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:ϵyo∼ N( 0 ,σ2= 0.007 ) ,⟹SD = 0.0837
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ϵyo∼ N( 0 , σ2= 0,00049 ) ,⟹SD = 0.007
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.007 0.000049 0.007
Intentaré contactar a los autores sobre estos dos asuntos.
fuente