Mensimulasikan Siklus Bisnis Riil

10

Pada dasarnya saya perlu meniru Hartley's 'Panduan Pengguna untuk Memecahkan Model Siklus Bisnis Riil' ( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ). Secara khusus, saya ingin mensimulasikan sistem dinamis yang tersirat oleh model yang ditentukan sebagai berikut:

masukkan deskripsi gambar di sini

di mana adalah konsumsi, adalah pasokan tenaga kerja, adalah modal, adalah proses teknologi autoregresif, adalah output dan adalah investasi.h k z y ichkzyi

Saya mensimulasikannya menggunakan logika berikut: katakanlah pada waktu , semuanya berada pada kondisi mapan dan semua nilai adalah 0, dari mana kita memiliki . Kemudian, pada dengan memberikan kejutan ke sistem melalui , saya menyelesaikan untuk dan (karena saya memiliki 'kaget' dan sebelumnya diperoleh Lalu, saya pasang keduanya untuk mengambil sisanya, yaitu - dan ulangi prosesnya.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

Sayangnya, saya mendapatkan proses peledakan yang tidak masuk akal:

masukkan deskripsi gambar di sini

Saya juga menyertakan kode R yang digunakan untuk mensimulasikan ini:

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()

Sy pertanyaan saya sederhana - apakah sistem yang ditentukan dalam makalah secara inheren tidak stabil dan ergo hasilnya, atau apakah saya membuat kesalahan di suatu tempat?

Sarunas
sumber

Jawaban:

6

Ledakan

Makalah ini mengandung kesalahan, yang menyebabkan dinamika ledakan dalam simulasi Anda (meskipun mungkin perhitungan yang mendasarinya di kertas itu benar). Kondisi ekuilibrium yang berasal dari dekomposisi nilai eigen terkandung dalam baris ketiga matriks pada halaman 12 dari makalah ini, dengan variabel yang dipesan sebagai (saya akan drop tildas, jadi semua variabel huruf kecil harus dipahami sebagai penyimpangan log). Membandingkan dengan eqn. (16) pada hal. 13, kita melihat bahwa koefisien untuk dan diaktifkan, sehingga kondisinya benar ( c , k , h , z ) k hQ1(c,k,h,z)kh

ct=0.54kt+0.02ht+0.44zt

Simulasi

Pertama, kita dapat menyatakan konsumsi dan tenaga kerja sebagai fungsi linear dari variabel status (tidak perlu menyelesaikan sistem pada setiap langkah simulasi). Kondisi keseimbangan intertemporal dan intratemporal dapat ditulis sebagai

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

jadi setelah dikalikan dengan invers kita dapatkan

[ctht]=[0.530.470.471.47][ktzt]

Selanjutnya, transisi untuk negara dapat ditulis sebagai

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

yang dapat dikurangi dengan mengganti variabel kontrol ke

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

Sekarang simulasi harus sepele, inilah contoh Matlab / Oktaf:

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')

Simulasi

Tentu saja dalam praktiknya, Anda mungkin harus menghitung ulang seluruh solusi, termasuk dekomposisi nilai eigen, sehingga Anda dapat mengubah parameter, dll.

ivansml
sumber
(+1). Mungkin akan membantu untuk membuat grafik output dan investasi, yang biasanya juga menjadi fokus perhatian (dan berkontribusi dalam memvalidasi model, ketika seri investasi menunjukkan variabilitas yang lebih besar daripada seri output).
Alecos Papadopoulos
5

BERITA Terakhir 20 Maret 2015 : Saya telah mengirim email kepada prof. K. Salyer, salah satu penulis Panduan Pengguna. Dalam komunikasi yang berulang, dia memverifikasi bahwa kedua masalah (lihat jawaban saya di bawah, serta jawaban @ivansml), memang ada:

a) Persamaan yang benar untuk hukum gerak konsumsi adalah seperti yang ditunjukkan oleh @ivansml

b) Jumlah adalah salah disebut "varians" (hal. 11) di koran. Pada kenyataannya, ini adalah standar deviasi , dan memang demikian besarnya adalah temuan khas dalam data (prof. Salyer merujuk "hal. 22 bentuk bab.1 dari Cooley dan Prescott's Frontiers of Business Cycle Research).0.007

Kedua kesalahan berhubungan dengan versi cetak dari kertas. Dengan kata lain, simulasi di balik Gambar 1 dari makalah ini benar: mereka menggunakan persamaan yang benar untuk konsumsi, dan mereka menggunakan sebagai standar deviasi dari gangguan dalam proses teknologi. Jadi ini adalah grafik kedua di bawah ini yang valid.0.007


FASE A
Saya diverifikasi dengan simulasi (dan menggunakan deviasi standar yang benar) bahwa model meledak, meskipun itu melakukannya ke atas daripada ke bawah. Pasti ada kesalahan perhitungan di koran, yang bagaimanapun tidak "ditransmisikan" ke simulasi penulis. Untuk saat ini saya tidak dapat memikirkan hal lain, karena metodologi ini standar. Saya tertarik dan masih mengerjakannya.

FASE B
Setelah jawaban @ ivansml, yang mengidentifikasi kesalahan di kertas (yang ternyata tidak dibuat dalam simulasi penulis) , saya pikir saya telah mengidentifikasi kesalahan kedua , kali ini dalam simulasi : dan ini terkait dengan apakah adalah standar deviasi atau nilai varians. 0.007

Secara khusus: Menggunakan sistem persamaan yang dikoreksi, dan gangguan acak (yaitu seperti yang ditulis dalam kertas ) saya mendapatkan grafik berikut dari yang terakhir 120 realisasi dari total 3.000: ϵiN(0,σ2=0.007),SD=0.0837masukkan deskripsi gambar di sini

Perhatikan nilai pada sumbu vertikal: mereka jauh lebih besar dari rentang nilai yang muncul pada Gambar 1 di makalah penulis.

Tetapi jika saya menghasilkan gangguan menurut , maka saya mendapatkan ϵiN(0,σ2=0.00049),SD=0.007masukkan deskripsi gambar di sini

Sekarang kisaran nilai cocok dengan yang muncul dalam grafik kertas. Ini mungkin merupakan kasus bahwa Varians yang benar adalah dan penulis salah menggunakannya sebagai StDev. Tetapi juga mungkin bahwa varians yang benar adalah dan SD yang benar adalah . Jadi simulasi itu benar (sesuai dengan perkiraan yang diperoleh), tetapi secara tidak sengaja mereka menyebut di koran "Varians" apa yang harus disebut "Standar Deviasi".0,000049 0,0070.0070.0000490.007

Saya akan berusaha menghubungi penulis mengenai dua hal ini.

Alecos Papadopoulos
sumber
Saya berhasil mengetahui bahwa prosesnya sebenarnya adalah ledakan seperti yang Anda tunjukkan. Saya memang membuat kesalahan tentang varians, bus karena sd adalah 0,083 yang berarti variasi yang lebih besar daripada yang saya gunakan dan proses meledak jauh lebih cepat. apa yang saya tidak mengerti bagaimana penulis berhasil mensimulasikan (sambil menulis) 3000 pengamatan dan memberikan plot seri stasioner (di akhir makalah) sementara proses tidak menunjukkan properti ini.
Sarunas
@Sarunas Periksa kode Anda sebagai berikut: hitung secara manual dua-tiga nilai pertama dari berbagai proses, menggunakan guncangan yang sebenarnya dihasilkan, dan bandingkan dengan nilai-nilai yang sesuai yang diberikan oleh kode kepada Anda.
Alecos Papadopoulos
saya melakukan itu. mencoba terjadi secara manual. apa yang akan berguna untuk diketahui dari para peneliti yang lebih berpengalaman adalah mengapa proses modal menjadi eksplosif? bukankah kita ingin itu diam? bagaimana jika kondisi mapan bisa dicapai? saya memeriksa nilai eigen dari sistem dan seperti yang Anda tunjukkan sebelumnya - sistem ini sebenarnya meledak sehingga tidak ada yang salah dalam kode itu sendiri. apakah kesalahan ada di koran atau saya tidak mengerti logikanya.
Sarunas
terima kasih banyak atas usaha Anda. Anda membantu saya! setidaknya, bukan aku yang melakukan kesalahan (secara fundamental) :)
Sarunas
1
@AlecosPapadopoulos Saya pikir koefisien pada modal dalam batasan sumber daya linier dapat melebihi satu (pada kenyataannya itu harus sama dengan dalam model ini) - yang penting adalah stabilitas proses setelah semua hubungan kesetimbangan telah diganti di. Jika saya mengambil matriks dari kertas dan plug mereka ke Paul Klein solab solver, saya mendapatkan solusi yang stabil, jadi saya akan mengatakan hanya ada beberapa kesalahan ketik numerik di koran. (jika Anda melakukannya sendiri, waspadalah terhadap notasi dan urutan variabel yang berbeda dalam kode Klein)( k t , z t ) A , B1/β(kt,zt)A,B
ivansml