기본적으로 Hartley의 '실제 비즈니스주기 모델 해결을위한 사용자 안내서'( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ) 를 복제해야합니다 . 특히 다음과 같이 지정된 모델에 의해 암시 된 동적 시스템을 시뮬레이션하려고합니다.
여기서 는 소비, h 는 노동 공급, k 는 자본, z 는 자기 회귀 기술 프로세스, y 는 출력이고 i 는 투자입니다.
다음 논리를 사용하여 시뮬레이션합니다 : 시간 에서 모든 것이 정상 상태이며 모든 값은 0이며, 우리는 k t + 1 입니다. 그런 다음에서 t + 1 을 통해 시스템에 충격을 주어 ε 내가 풀기 C의 t + 1 과 시간 t + 1 (I는 '충격'가지고 Z의 t + 1 및 이전에 취득한 전율 t + 1 .이어서, I 즉 나머지 검색 두 플러그 - Y t + 1 , I 및 프로세스를 반복하십시오.
불행히도 이해가되지 않는 폭발적인 과정이 있습니다.
또한 이것을 시뮬레이션하는 데 사용되는 R 코드도 포함합니다.
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()
제 질문은 간단합니다-논문에 명시된 시스템이 본질적으로 불안정하고 결과를 잘못 해석 했습니까? 아니면 어딘가에서 실수를 했습니까?