我准备将状态空间模型拟合到单变量时间序列(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 = ...?
的起始值有关