실제 비즈니스주기 시뮬레이션


10

기본적으로 Hartley의 '실제 비즈니스주기 모델 해결을위한 사용자 안내서'( http://www.econ.ucdavis.edu/faculty/kdsalyer/LECTURES/Ecn235a/Linearization/ugfinal.pdf ) 를 복제해야합니다 . 특히 다음과 같이 지정된 모델에 의해 암시 된 동적 시스템을 시뮬레이션하려고합니다.

여기에 이미지 설명을 입력하십시오

여기서 는 소비, h 는 노동 공급, k 는 자본, z 는 자기 회귀 기술 프로세스, y 는 출력이고 i 는 투자입니다.씨h케이지와이나는

다음 논리를 사용하여 시뮬레이션합니다 : 시간 에서 모든 것이 정상 상태이며 모든 값은 0이며, 우리는 k t + 1 입니다. 그런 다음에서 t + 1 을 통해 시스템에 충격을 주어 ε 내가 풀기 C의 t + 1 과 시간 t + 1 (I는 '충격'가지고 Z의 t + 1 및 이전에 취득한 전율 t + 1 .이어서, I 즉 나머지 검색 두 플러그 - Y t + 1 , I티케이티+1티+1ε씨티+1h티+1지티+1케이티+1 및 프로세스를 반복하십시오.와이티+1,나는티+1,케이티+2

불행히도 이해가되지 않는 폭발적인 과정이 있습니다.

여기에 이미지 설명을 입력하십시오

또한 이것을 시뮬레이션하는 데 사용되는 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()

제 질문은 간단합니다-논문에 명시된 시스템이 본질적으로 불안정하고 결과를 잘못 해석 했습니까? 아니면 어딘가에서 실수를 했습니까?

답변:


6

폭발성

큐−1(씨,케이,h,지)케이h

씨티=0.54케이티+0.02h티+0.44지티

시뮬레이션

먼저 소비와 노동을 상태 변수의 선형 함수로 표현할 수 있습니다 (시뮬레이션의 각 단계에서 시스템을 풀 필요가 없습니다). 시간 간 및 시간 내 평형 조건은 다음과 같이 쓸 수 있습니다.

[1−0.022.781][씨티h티]=[0.540.4412.78][케이티지티]

따라서 역수를 곱하면

[씨티h티]=[0.530.47−0.471.47][케이티지티]

다음으로 상태 전이는 다음과 같이 쓸 수 있습니다.

[케이티+1지티+1]=[−0.070.0600][씨티h티]+[1.010.100.95][케이티지티]+[0ϵ티+1]

제어 변수를 대체하여 감소시킬 수 있습니다.

[케이티+1지티+1]=[0.940.1600.95][케이티지티]+[0ϵ티+1]

이제 시뮬레이션은 쉽지만 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')

시뮬레이션

물론 실제로 고유 값 분해를 포함한 전체 솔루션을 다시 계산하여 매개 변수 등을 변경할 수 있도록해야합니다.


(+1). 아마도 출력 및 투자를 그래프로 작성하는 것이 도움이 될 것입니다. 이는 일반적으로 관심의 대상이기도합니다 (투자 시리즈가 출력 시리즈보다 변동성이 큰 경우 모델 검증에 기여합니다).
— Alecos Papadopoulos 1

5

최종 뉴스 2015 년 3 월 20 일 : 교수에게 전자 메일을 보냈습니다. K. Salyer, 사용자 안내서의 저자 중 하나. 반복적 인 의사 소통에서 그는 두 가지 문제 (아래의 답변과 @ivansml 답변 참조)가 존재하는지 확인했습니다.

a) 소비 운동 법칙에 대한 올바른 방정식은 @ivansml이 보여주는 것과 같습니다.

0.007

0.007


단계 A
시뮬레이션을 통해 (그리고 올바른 표준 편차를 사용하여) 모델이 아래쪽이 아닌 위쪽으로 폭발하지만 폭발한다는 것을 확인했습니다 . 논문에는 계산 실수가 있어야하지만 그럼에도 불구하고 저자의 시뮬레이션에 "전송되지"않았다. 방법론이 표준이기 때문에 지금은 다른 것을 생각할 수 없습니다. 나는 흥미로워 서 여전히 노력하고 있습니다.


0.007

ϵ나는∼엔(0,σ2=0.007),⟹에스디=0.0837여기에 이미지 설명을 입력하십시오

세로 축의 값을 참고하십시오.이 값 은 저자의 논문에서 그림 1에 나타나는 값의 범위보다 훨씬 큽니다 .

ϵ나는∼엔(0,σ2=0.00049),⟹에스디=0.007여기에 이미지 설명을 입력하십시오

0.0070.0000490.007

이 두 가지 문제에 대해 저자에게 연락을 시도 할 것입니다.


나는 당신이 지적한 것처럼 프로세스가 실제로 폭발적이라는 것을 알았습니다. sd가 0.083이므로 분산에 대해 실수를했습니다. 처음 사용했던 것보다 훨씬 큰 변화를 의미하며 프로세스가 훨씬 빠르게 폭발합니다. 필자가 저자가 3000 개의 관측 값을 시뮬레이션하고 (종이의 끝에서) 고정 시리즈의 플롯을 제공하는 방법을 얻지 못했지만 프로세스에는이 속성이 표시되지 않습니다.
— Sarunas

@Sarunas 다음과 같이 코드를 확인하십시오 . 실제로 생성 된 충격을 사용하여 다양한 프로세스의 처음 두 세 값을 수동으로 계산 하고 코드가 제공하는 해당 값과 비교하십시오.
— Alecos Papadopoulos

내가 그거 했어. 수동으로 계속 시도했습니다. 보다 숙련 된 연구원들로부터 알고있는 것이 자본 프로세스가 폭발적인 이유는 무엇입니까? 고정되어 있지 않습니까? 어떻게 안정된 상태를 달성 할 수 있습니까? 나는 시스템의 고유 값을 확인했으며 앞에서 지적했듯이 시스템은 실제로 폭발성이 있으므로 코드 자체에는 아무런 문제가 없습니다. 실수는 종이에 있거나 논리를 이해하지 못합니다.
— Sarunas

노력해 주셔서 감사합니다. 당신은 나에게서 지옥을 도왔습니다! 적어도 (실수 적으로) 실수를 저지른 사람은 아닙니다. :
— Sarunas

1
1/β(케이티,지티)ㅏ,비
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.