我正在尝试使用 MARSS 包估计以下未观察到的组件模型
对误差方差的限制:对于给定的。是观察到的序列,和是状态。熟悉这些模型的人会认为这是 Hodrick-Prescott 滤波器。
MARSS 以这种形式处理模型
所以我尝试了这个
lambda=1600
B1 = matrix(c(1,0,1,1),2,2)
U1 = matrix(0,2,1)
Q1= matrix(list(),2,2)
Q1[1,1]=0
Q1[1,2]=0
Q1[2,1]=0
Q1[2,2]="q11*1/lambda"
Z1 = matrix(c(1,0),1,2)
A1 = as.matrix(0)
R1 = as.matrix("q11")
pi1 = matrix(0,2,1)
V1 = diag(1,2)
model.list = list(B = B1, U = U1, Q = Q1, Z = Z1, A = A1, R = R1, x0 = pi1, V0 = V1)
fit = MARSS(data, model = model.list, control = list(kf.x0 = "x00"))
但是 Q[2,2] 的规范是错误的,MARSS 将其读取为一个新的参数来估计。我知道我可以将 Q 矩阵和 R 矩阵中的参数限制为相同,但我不知道如何施加影响两个矩阵参数的方差限制。有谁知道解决这个问题的方法?也许使用替代()?
我知道有一些包可以实现 HP 滤波器以及其他状态空间估计包,但我想使用 MARSS,因为它使用 EM 算法来估计参数,我想将此模型扩展到其他难以实现收敛的模型。
谢谢你。