R を使用して、出力 (y) のデータと失業率 (u) から潜在的な出力 (y_p) を取得するために、状態空間モデルを推定しようとしています。モデルは既に EViews でプログラムされており、単にその結果を再現したいだけです。 . このモデルは、次の方程式で表されます (時間の指標を使用)。
信号方程式:
(i) y_t = y_p_t + eps_y_t
(ii) u_t = beta_0 + beta_1(y_t-y_p_t) + eps_u_t
状態方程式:
(iii) y_p_t = y_p_(t-1) + g_(t-1)
(iv) g_t = g_(t-1) + eps_g_t
さまざまなパッケージを試しました。ただし、さまざまな問題があります。インターセプトが許可されていないか (dlm パッケージ)、よりスムーズな機能がないか (FKF パッケージ) のいずれかです。そのため、2 つの質問がありますが、どちらに答えても問題は解決します。1 つ目 (質問 1a および 1b) は、dlm パッケージでの適切な状態空間モデルの仕様に関連しています。2 つ目 (質問 2) は、FKF パッケージで使用できる平滑化機能に関連しています。
- 質問1a。dlm-package では、インターセプトは許可されません。そこで、y_t データを参照するために JGG 行列を使用して、beta_0 と出力ギャップ (gap_t = y_t-y_p_t) を状態ベクトルに入れ、続いて最尤法で beta_1 を推定しようとしました。しかし、妥当な結果は得られませんでした。
# States: x(1) y_pot, x(2) growth, x(3) y_gap, x(4) beta_0
# Signal: y(1) y, y(2) u
beta_1 <- -0.2
beta_0 <- 0.03
# Measurement
FF <- matrix(c(1, 0, 0, 0,
0, beta_1, 0, 1), 2, 4)
# Transition
GG <- matrix(c(1, 0, -1, 0,
1, 1, -1, 0,
0, 0, 1, 0,
0, 0, 0, beta_0), 4, 4)
JGG <- matrix(c(0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 1, 0,
0, 0, 0, 0), 4, 4)
# Covariance Transition
W <- diag(1e-2, 4)
# Covariance Measurement
V <- matrix(c(1e-2, 0,
0, 1e-2), 2, 2)
m0 <- c(11.4, 0.04, 0, 0.03)
C0 <- diag(1, 4) # 1e-7
C0[3,3] <- 0.1
C0[4,4] <- 0.1
# Now bring them into the dlm-object
myMod <- dlm(FF = FF,
GG = GG,
JGG = JGG,
X = dataMLE,
W = W,
V = V,
m0 = m0,
C0 = C0)
buildFun <- function(theta) {
V(myMod)[1,1] <- lambda_ss*exp(theta[1])
V(myMod)[2,2] <- exp(theta[2])
W(myMod)[2,2] <- exp(theta[1])
FF(myMod)[2,3] <- theta[3]
return(myMod)
}
myMod.mle <- dlmMLE(y = dataMLE, parm = c(-10, -10, -.2),
build = buildFun,
lower = c(rep(-1e6, 3)),
upper = c(rep(1e6, 3)),
control = list(trace = 1, REPORT = 5, maxit = 1000))
- 質問1b。また、状態ベクトル x(1) y_pot、x(2) 成長、x(3) beta_1、x(4) beta_0 を使用し、JFF を使用して出力ギャップの y_t データを取得しようとしました。計算...しかし、このアプローチも成功しませんでした。
質問 1: このかなり単純なモデルを dlm パッケージ内に実装する方法を知っていますか? 問題は、一方ではインターセプトであり、他方では、1 つの状態変数と 1 つの外部信号から構成される出力ギャップと beta_1 推定の相互作用です。
- より有望なアプローチは、FKF パッケージを使用することです。ただし、このパッケージにはスムーズ機能はありません。
質問 2: FKF パッケージを使用して、カルマン フィルター処理された出力の代わりに平滑化された出力を取得する方法はありますか?
この問題について何か助けていただければ幸いです。
本当にありがとうございました!
サミュエル