計量經濟學

AR 1 過程模擬

  • April 25, 2018

我想使用 STATA 進行卡爾曼濾波器模擬,並希望通過以下方式進行

1. Generate iid error terms 

$$
{e_t}, {n_t}, {u_t} $$

2. Generate three AR1 process like so

$$
\beta_t = ab_{t-1} + u_t $$ $$ x_t = c_0 + c_1x_{t-1} + n_t $$ $$ y_t = b_t*x_t + e_t $$

3. use Kalman filter to predict b_hat

我已經能夠使用 rnorm() 生成 iid 錯誤術語,但我被困在第二步。我知道如何執行狀態空間模型來獲得卡爾曼濾波器估計,但 AR1 真的讓我大吃一驚。

由於您只停留在估計AR(1)模型上,我可以向您展示一些範常式式碼來估計您給出的方程。請記住,我沒有設置斜坡: $ a $ 和 $ c_1 $ 在random walkrandom walk with drift。此外,範常式式碼在 中Python,但在 中應該是不言自明和可重現STATA

import numpy as np
import matplotlib.pyplot as plt

# Setting sample size
sample_size = 100

# Vectors with variables of interest
b = np.zeros(sample_size)
x = np.zeros(sample_size)
y = np.zeros(sample_size)

# IID random errors (normally distributed)
u = np.random.normal(size = sample_size)
n = np.random.normal(size = sample_size)
e = np.random.normal(size = sample_size)

# Drift
c_0 = 2

# Simulating each series
for t in range(sample_size):
   b[t] = b[t-1] + u[t]
   x[t] = c_0 + x[t-1] + n[t]
   y[t] = b[t] * x[t] + e[t]

# Plotting the results    
plt.rcParams["figure.figsize"] = [10,10]

plt.subplot(321)    
plt.plot(b)
plt.title('Random walk: $b_t = b_{t-1} + u_t$')

plt.subplot(322)
plt.plot(x)
plt.title('Random walk with drifft: $x_t = c_0 + x_{t-1} + n_t$')

plt.subplot(323)
plt.plot(y)
plt.title('$y_t = b_t * x_t + e_t$')

plt.show()

AR(1) 過程模擬

引用自:https://economics.stackexchange.com/questions/21628