我正在研究 R 包 dlm。到目前为止,它似乎是非常强大和灵活的包,具有良好的编程接口和良好的文档。
我已经能够成功地使用 dlmMLE 和 dlmModARMA 来估计 AR(1) 过程的参数:
u <- arima.sim(list(ar = 0.3), 100)
fit <- dlmMLE(u, parm = c(0.5, sd(u)),
build = function(x)
dlmModARMA(ar = x[1], sigma2 = x[2]^2))
fit$par
现在我正在尝试使用类似的代码来估计简单线性回归模型的参数:
r <- rnorm(100)
u <- -1*r + 0.5*rnorm(100)
fit <- dlmMLE(u, parm = c(0, 1),
build = function(x)
dlmModReg(x[1]*r, FALSE, dV = x[2]^2))
fit$par
我希望 fit$par 接近 c(-1, 0.5),但我不断得到类似的东西
[1] -0.0002118851 0.4884367070
系数 -1 估计不正确。然而,奇怪的是噪声的方差被正确返回。
我知道如果初始值不好,最大似然估计可能会失败,但我观察到 dlmLL 返回的似然函数在第一个坐标中非常平坦。
所以我想知道:可以使用 dlm 来估计这样的模型吗?我相信该模型是“非奇异的”,但是我不确定如何在 dlm 中计算似然函数。
任何提示都非常感谢。