我想根据我选择的状态数动态参数化状态空间模型的数组。
我正在循环执行此操作-
Q <- function(params,states) {
qmat <- matrix(0,statespace,statespace)
for (i in 1:statespace)
qmat[i,i] <- statshockvar(params[(i-1)*5+1], params[(i-1)*5+2],
params[(i-1)*5+3],states[i])
qmat
}
这个函数被调用了很多次,因为程序的重点是优化一个参数集。但是,此函数设置大大减慢了优化阶段,因为此函数和其他类似函数不断被调用,并且他们不断重新定义数组。
如何使用上述相关参数动态地定义一次我需要的数组,然后能够使用一组新参数调用矩阵函数进行优化?
谢谢!
编辑 -
statespace
只是一个整数,描述模型中使用的状态数,比如 3/
statshockvar <- function(meanrev,longrun,sigma,sstate) {
longrun*sigma^2/(2*meanrev)*(1-exp(-longrun))^2+sigma^2/longrun*(exp(-longrun) -
exp(-2*longrun))*sstate
}
statshockvar
- 在这个特定示例中,是期限结构的 CIR 模型的离散化方差
编辑 2 -
参数看起来像这样 - 请注意这些只是任意数字
params = c(
0.3275,
0.07,
0.197,
0,
0.05,
0.01,
0.2,
0.3,
0,
0.05,
0.01,
0.1,
0.3,
0,
0.05)
状态将是这样的 -
states = c(0.07,0.07,0.07)
同样,这些状态是任意的。