1

我正在尝试估计一个状态空间模型,以使用 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 包)。所以我确实有两个问题,其中任何一个都可以解决我的问题。第一个(问题 1a 和 1b)与 dlm 包中适当的状态空间模型的规范有关;第二个(问题 2)涉及可以与 FKF 包一起使用的平滑函数。

  1. 问题 1a。在 dlm-package 中不允许截取。因此,我使用 JGG 矩阵将 beta_0 和输出间隙 (gap_t = y_t-y_p_t) 放入状态向量中以引用 y_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))
  1. 问题 1b。我还尝试使用状态向量 x(1) y_pot、x(2) growth、x(3) beta_1、x(4) beta_0,并使用 JFF 获取输出间隙的 y_t 数据-计算......但这种方法也没有成功。

问题 1:您知道在 dlm 包中实现这个相当简单的模型的方法吗?问题一方面是截断,另一方面是 beta_1 估计与输出间隙的相互作用,输出间隙本身由一个状态变量和一个外部信号组成。

  1. 一个更有希望的方法似乎是使用 FKF 包。但是,此包中没有提供更平滑的功能。

问题 2:有没有办法获得平滑输出而不是使用 FKF 包的卡尔曼滤波输出?

我非常感谢在这个问题上的任何帮助!

十分感谢!

塞缪尔

4

0 回答 0