Mô phỏng chu kỳ kinh doanh thực


10

Về cơ bản, tôi cần sao chép 'Hướng dẫn sử dụng để giải quyết các mô hình chu kỳ kinh doanh thực tế' của Hartley ( http://www.econ.ucdavis.edu/facemony/kdsalyer/LECTOUND/Ecn235a/Linearization/ugfinal.pdf ). Cụ thể, tôi muốn mô phỏng hệ thống động lực được ngụ ý bởi mô hình được chỉ định như sau:

nhập mô tả hình ảnh ở đây

Trong đó là tiêu dùng, h là cung lao động, k là vốn, z là quy trình công nghệ tự phát, y là đầu ra và i là đầu tư.chkzyi

Tôi mô phỏng nó bằng logic sau: giả sử tại thời điểm , mọi thứ đều ở trạng thái ổn định và tất cả các giá trị là 0, từ đó chúng ta có k t + 1 . Sau đó, tại bằng cách gây sốc cho hệ thống thông qua , tôi giải quyết cho và (vì tôi đã 'sốc' và đã thu được trước đó . Sau đó, tôi cắm hai cái đó để lấy phần còn lại, cụ thể là - và lặp lại quy trình.tkt+1ε c t + 1 h t + 1 z t + 1 k t + 1 y t + 1 , i t + 1 , k t + 2t+1εct+1ht+1zt+1kt+1yt+1,it+1,kt+2

Thật không may, tôi nhận được một quy trình bùng nổ không có ý nghĩa:

nhập mô tả hình ảnh ở đây

Tôi cũng bao gồm mã R được sử dụng để mô phỏng điều này:

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 câu hỏi của tôi rất đơn giản - hệ thống được chỉ định trong bài viết vốn không ổn định và cho kết quả, hoặc tôi đã mắc lỗi ở đâu đó?

Câu trả lời:


6

Sự bùng nổ

Q1(c,k,h,z)kh

ct=0.54kt+0.02ht+0.44zt

Mô phỏng

Đầu tiên, chúng ta có thể biểu thị mức tiêu thụ và lao động dưới dạng hàm tuyến tính của các biến trạng thái (không cần giải hệ thống ở mỗi bước mô phỏng). Các điều kiện cân bằng giữa các bên và bên trong có thể được viết là

[1-0,022,781][ctht]= =[0,540,4412,78][ktzt]

vì vậy sau khi nhân với một nghịch đảo, chúng ta nhận được

[ctht]= =[0,530,47-0,471,47][ktzt]

Tiếp theo, quá trình chuyển đổi cho các trạng thái có thể được viết là

[kt+1zt+1]= =[-0,070,0600][ctht]+[1,010,100,95][ktzt]+[0εt+1]

có thể giảm bằng cách thay thế cho các biến điều khiển

[kt+1zt+1]= =[0,940,1600,95][ktzt]+[0εt+1]

Bây giờ mô phỏng nên tầm thường, đây là một ví dụ 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')

Mô phỏng

Tất nhiên trong thực tế, có lẽ bạn nên tính toán lại toàn bộ giải pháp, bao gồm cả phân tách eigenvalue, để bạn có thể thay đổi các tham số, v.v.


(+1). Có lẽ nó sẽ hữu ích cho đầu ra và đầu tư đồ thị, vốn thường tập trung vào lợi ích (và đóng góp vào việc xác nhận mô hình, khi chuỗi đầu tư thể hiện sự biến động lớn hơn so với chuỗi đầu ra).
Alecos Papadopoulos

5

TIN TỨC cuối cùng ngày 20 tháng 3 năm 2015 : Tôi đã gửi e-mail prof. K. Salyer, một trong những tác giả của Hướng dẫn sử dụng. Trong một giao tiếp lặp đi lặp lại, anh ấy đã xác minh rằng cả hai vấn đề (xem câu trả lời của tôi bên dưới, cũng như câu trả lời @ivansml), đều tồn tại:

a) Phương trình đúng cho quy luật chuyển động của tiêu dùng là như @ivansml chỉ ra

0,007

0,007


GIAI ĐOẠN A
Tôi đã xác minh bằng mô phỏng (và sử dụng độ lệch chuẩn chính xác) mà mô hình phát nổ, mặc dù nó làm như vậy lên trên chứ không phải xuống dưới. Phải có một lỗi tính toán trong bài báo, tuy nhiên bằng cách nào đó không được "truyền" đến các mô phỏng của các tác giả. Hiện tại tôi không thể nghĩ gì khác, vì phương pháp này là tiêu chuẩn. Tôi tò mò và vì vậy vẫn làm việc trên nó.


0,007

εTôi~N(0,σ2= =0,007),SD= =0,0837nhập mô tả hình ảnh ở đây

Lưu ý các giá trị trên trục tung: chúng lớn hơn nhiều so với phạm vi giá trị xuất hiện trong Hình 1 trong bài viết của tác giả.

εTôi~N(0,σ2= =0,00049),SD= =0,007nhập mô tả hình ảnh ở đây

0,0070,0000490,007

Tôi sẽ cố gắng liên lạc với các tác giả về hai vấn đề này.


tôi quản lý để tìm ra rằng quá trình này thực sự bùng nổ như bạn đã chỉ ra. Tôi đã phạm sai lầm về phương sai, bus vì sd là 0,083 có nghĩa là biến thể thậm chí còn lớn hơn tôi sử dụng ban đầu và quá trình phát nổ nhanh hơn nhiều. những gì tôi không hiểu làm thế nào tác giả quản lý để mô phỏng (khi ông viết) 3000 quan sát và cung cấp cốt truyện của loạt văn phòng phẩm (ở cuối bài) trong khi quá trình không thể hiện tính chất này.
Sarunas

@Sarunas Kiểm tra mã của bạn như sau: tính toán thủ công hai ba giá trị đầu tiên của các quy trình khác nhau, sử dụng các cú sốc thực sự được tạo và so sánh với các giá trị tương ứng mà mã cung cấp cho bạn.
Alecos Papadopoulos

tôi đã làm điều đó đã cố gắng diễn ra bằng tay. Điều gì sẽ hữu ích để biết từ các nhà nghiên cứu có kinh nghiệm hơn là tại sao quá trình vốn sẽ bùng nổ? chúng ta sẽ không muốn nó đứng yên chứ? làm thế nào khác trạng thái ổn định có thể đạt được? tôi đã kiểm tra giá trị riêng của hệ thống và như bạn đã chỉ ra trước đó - hệ thống thực tế là chất nổ nên không có gì sai trong chính mã. hoặc là những sai lầm trong bài báo hoặc tôi không hiểu logic.
Sarunas

cảm ơn rất nhiều vì nỗ lực của bạn bạn đã giúp tôi thoát khỏi địa ngục ít nhất, không phải tôi là người mắc lỗi (về cơ bản) :)
Sarunas

1
1/β(kt,zt)Một,B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.