2
我在R中使用dlm
包進行卡爾曼濾波仿真數據。dlm package in R:是什麼導致這個錯誤:`tsp <-`(`* tmp *`,value = c(1,2,1,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*
,value = c(1,200,1))``。
我試圖尋找錯誤的位置。看起來,過濾工作正常,也就是說,手段和差異估計是正確的,直到在代碼分配tsp(ans$a) <- ytsp
的最後一部分,錯誤發生。
有沒有其他人面臨這個問題?如果是的話,那麼我做錯了什麼。
我可能很有可能錯誤地設置了時間序列。我很抱歉,我在處理R中的時間序列方面經驗有限。基本上我在3個時間點觀察200x1向量。 – suncoolsu 2012-01-14 15:06:36
我很想說這個,因爲設置'tsp(tseries)< - NULL'不會給出錯誤。 – suncoolsu 2012-01-14 15:12:30