โดยทั่วไปฉันต้องทำซ้ำ 'คู่มือผู้ใช้ของ Hartley ในการแก้ไขโมเดลวัฏจักรธุรกิจจริง' ( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ) โดยเฉพาะฉันต้องการจำลองระบบพลวัตโดยนัยโดยรูปแบบที่ระบุไว้ดังต่อไปนี้:
เมื่อคือการบริโภค, hคือค่าแรง, kคือทุน, zคือกระบวนการทางเทคโนโลยีอัตโนมัติ, yคือผลลัพธ์และฉันเป็นการลงทุน
ฉันจำลองโดยใช้ตรรกะต่อไปนี้: พูดในเวลาที่ทุกอย่างอยู่ที่ความมั่นคงของรัฐและค่าทั้งหมดเป็น 0 จากการที่เรามีk T + 1 จากนั้นที่t + 1โดยให้อัพระบบผ่านεฉันแก้หาc t + 1และh t + 1 (เนื่องจากฉันมี 'ตกใจ' z t + 1และก่อนหน้านี้ได้รับk t + 1จากนั้น ฉันเสียบสองตัวนั้นเพื่อดึงส่วนที่เหลือนั่นคือ - 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()
คำถามของฉันง่ายมาก - ระบบที่ระบุในเอกสารนั้นมีความไม่แน่นอนและผลลัพธ์ที่ได้หรือไม่หรือฉันทำผิดพลาดที่ไหนสักแห่ง?