使用dlm拟合状态空间模型

时间:2015-05-26 10:58:32

标签: r

我准备将状态空间模型拟合到单变量时间序列(y_t)。我试图适合的模型是:

y_t=F x_t+\epsilon_t, \epsilon_t \sim N(0,V)
x_{t+1}=G x_t+w_t, w_t \sim N(0,W)
x_0 \sim N(m_0,C_0)

我使用以下R代码:

# Create function of unknown parameters, which returns dlm object
Build <- function(theta) {dlm(FF=theta[1],
GG=theta[2],V=theta[3],W=theta[4],m0=theta[5],
C0=theta[6])}

# Fit model to data using MLE
f1 <- dlmMLE(y,parm=c(1,1,0.1,0.1,0,0.1),Build)

但是我收到以下错误消息(在运行f1之后):

Error in dlm(FF = theta[1], GG = theta[2], V = theta[3], W = theta       [4],  : 
V is not a valid variance matrix

我的问题是我不明白为什么V不是有效的方差矩阵。

有谁知道出了什么问题? 提前谢谢

关心fuente

编辑:

我尝试过这样做,但不是我使用的真实数据:

y <- rnorm(72,6.44,1.97)

然而,这产生了涉及W(而不是V ......)的错误:

Error in dlm(FF = theta[1], GG = theta[2], V = theta[3], W = theta[4],  : 

W不是有效的方差矩阵

我很困惑。它是否与传递给parm = ...?

的起始值有关

0 个答案:

没有答案