I am trying to estimate a state-space model to obtain the potential output (y_p) from data on output (y) and the unemployment rate (u) using R. The model is already programmed in EViews and I simply want to reproduce its results. The model is described by the following eqations (with time indizes):

signal equations:

(i) y_t = y_p_t + eps_y_t

(ii) u_t = beta_0 + beta_1(y_t-y_p_t) + eps_u_t

state equations:

(iii) y_p_t = y_p_(t-1) + g_(t-1)

(iv) g_t = g_(t-1) + eps_g_t

I have tried different packages. But there are different problems: Either there are no intercepts allowed (dlm package) or there is no smoother function (FKF package). So I do have two questions, either of them answered would solve my problem. The first (Questions 1a and 1b) relates to the specification of an appropriate state-space model in the dlm-package; the second (Question 2) relates to a smoothing function that could be used with the FKF package.

  1. Question 1a. In the dlm-package no intercepts are allowed. So I put beta_0 and the output gap (gap_t = y_t-y_p_t) into the state vector using the JGG-matrix to reference to the y_t-data and tried to estimate beta_1 subsequently via maximum likelihood. However, I didn't obtain reasonable results.
# 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. Question 1b. I've also tried to use the state vector x(1) y_pot, x(2) growth, x(3) beta_1, x(4) beta_0, and to use JFF to get the y_t-data for the output-gap-calculation... but this approach was not sucessfull either.

Question 1: Do you know of a way in which this rather simple model could be implemented within the dlm-package? The problems are the incercepts on the one hand and on the other the interaction of the beta_1-estimation with the ouput-gap, which consists itself of one state-variable and one external signal.

  1. A more promising approach seemed to be to use the FKF-package. However, no smoother function is provided within this package.

Question 2: Is there a way to obtain the smoothed output instead of the Kalman-filtered output usind the FKF-package?

I deepely appreciate any help on this problem!

Thank you a lot!

Samuel

0

There are 0 answers