2
私は、カルマンフィルタを実行するためにRのdlm
パッケージを使用しています。シミュレートされたデータに従う。Rのdlmパッケージ:このエラーの原因: `tsp <-`(` * tmp * `、value = c(1,200,1))
## Multivariate time-series of dimension 200 and length 3
obsTimeSeries <- cbind(rnorm(200, 1, 2), rnorm(200, 2, 2), rnorm(200, 3, 2))
tseries <- ts(obsTimeSeries, frequency = 1)
kalmanBuild <- function (par) {
kalmanMod <- dlm(FF = diag(1, 200), GG = diag(1, 200),
V = exp(par[1]) * diag(1, 200),
W = exp(par[2]) * diag(1, 200),
m0 = rep(0, 200), C0 = 1e100 * diag(1, 200))
kalmanMod
}
kalmanMLE <- dlmMLE(tseries, parm = rep(0, 2), build = kalmanBuild)
kalmanMod <- kalmanBuild(kalmanMLE$par)
kalmanFilt <- dlmFilter (tseries, kalmanMod)
kalmanMod
までのコードは正常です。 dlmFilter(tseries, kalmanMod)
に`tsp<-
(*tmp*
、値= c(1,200,1)) `というエラーが返されます。
私はエラーの場所を探してみました。それは、コードがtsp(ans$a) <- ytsp
を割り当てた最後の部分でエラーが発生するまで、フィルタリングがうまく動作する、つまり平均と分散が正しく推定されるようです。
他に誰かがこの問題に直面していますか?はいの場合、私は間違って何をしています。
時系列を間違って設定している可能性があります。私はRで時系列を扱う経験が限られていることを申し訳ありません。基本的に私は3つの時点で200x1ベクトルを観測しています。 – suncoolsu
'tsp(tseries)< - NULL'を設定するとエラーが発生しないので、これを言うと思います。 – suncoolsu