當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R KalmanLike 卡爾曼濾波


R語言 KalmanLike 位於 stats 包(package)。

說明

使用卡爾曼濾波查找(高斯)對數似然,或用於預測或平滑。

用法

KalmanLike(y, mod, nit = 0L, update = FALSE)
KalmanRun(y, mod, nit = 0L, update = FALSE)
KalmanSmooth(y, mod, nit = 0L)
KalmanForecast(n.ahead = 10L, mod, update = FALSE)

makeARIMA(phi, theta, Delta, kappa = 1e6,
          SSinit = c("Gardner1980", "Rossignol2011"),
          tol = .Machine$double.eps)

參數

y

單變量時間序列。

mod

說明狀態空間模型的列表:請參閱“詳細信息”。

nit

計算初始化的時間。 nit = 0L 意味著初始化是為了一步預測,因此 Pn 不應在第一步計算。

update

如果TRUE,則更新mod對象將作為結果的屬性"mod"返回。

n.ahead

需要預測的前方步驟數。

phi, theta

長度為 的數字向量給出 AR 和 MA 參數。

Delta

差分係數向量,因此 ARMA 模型適合 y[t] - Delta[1]*y[t-1] - ...

kappa

差分模型中過去觀測值的先驗方差(作為創新方差的倍數)。

SSinit

指定計算狀態空間初始化的 Pn 部分的算法的字符串;查看具體信息'。

tol

SSinit = "Rossignol2011" 時,容差最終傳遞給 solve.default

細節

這些函數與具有狀態向量‘的一般單變量狀態空間模型一起使用⁠a⁠”,過渡“⁠a <- T a + R e⁠’, 和觀測方程‘⁠y = Z'a + eta⁠’, 。可能性是估計後的輪廓可能性 .

該模型被指定為至少包含組件的列表

T

轉移矩陣

Z

觀測係數

h

觀察方差

V

'⁠RQR’⁠

a

當前狀態估計

P

狀態不確定性矩陣的當前估計

Pn

狀態不確定性矩陣 在時間 的估計(未由 KalmanForecast 更新)。

KalmanSmoothtsSmooth 的主力函數。

makeARIMA 構造 ARIMA 模型的狀態空間模型,另請參閱 arima

狀態空間初始化多年來一直使用 Gardner 等人的方法 (SSinit = "Gardner1980")。然而,當接近非平穩時,有時會出現缺陷。因此,將來它可能會被替換為默認值,並且僅出於可重複性的原因而保留。因此,建議顯式指定 SSinit,特別是在 arima() 中。 "Rossignol2011" 方法已由 Raphael Rossignol 大學提出並部分記錄。格勒諾布爾,於 2011 年 9 月 20 日(請參閱下麵的 PR#14682),後來由 Matwey V. Kornilov 移植到 C。它通過差分方程的方法(Brockwell 和 Davis 第 93 頁)計算 的協方差矩陣,這顯然是由 Gardner 等人的裁判建議的(參見他們論文的第 314 頁)。

對於 KalmanLike ,包含組件 Lik (對數似然減去一些常數)和 s2 的列表,即 的估計值。

對於 KalmanRun ,包含組件 values 的列表,長度為 2 的向量,給出 KalmanLikeresid (殘差)和 states 的輸出,同時狀態估計,每個矩陣一行觀察時間。

對於 KalmanSmooth ,包含兩個組件的列表。組件 smooth 是基於所有觀測值的狀態估計 n x p 矩陣,每次一行。分量 var 是方差矩陣的 n by p by p 數組。

對於 KalmanForecast ,包含組件 pred 、預測和 var 、預測誤差的未縮放方差(乘以 s2 )的列表。

對於 makeARIMA ,包含其參數組件的模型列表。

警告

這些函數被設計為從其他函數調用,這些函數檢查傳遞的參數的有效性,因此很少進行檢查。

例子

## an ARIMA fit
fit3 <- arima(presidents, c(3, 0, 0))
predict(fit3, 12)
## reconstruct this
pr <- KalmanForecast(12, fit3$model)
pr$pred + fit3$coef[4]
sqrt(pr$var * fit3$sigma2)
## and now do it year by year
mod <- fit3$model
for(y in 1:3) {
  pr <- KalmanForecast(4, mod, TRUE)
  print(list(pred = pr$pred + fit3$coef["intercept"], 
             se = sqrt(pr$var * fit3$sigma2)))
  mod <- attr(pr, "mod")
}

參考

Durbin, J. and Koopman, S. J. (2001). Time Series Analysis by State Space Methods. Oxford University Press.

Gardner, G, Harvey, A. C. and Phillips, G. D. A. (1980). Algorithm AS 154: An algorithm for exact maximum likelihood estimation of autoregressive-moving average models by means of Kalman filtering. Applied Statistics, 29, 311-322. doi:10.2307/2346910.

R bug report PR#14682 (2011-2013) https://bugs.r-project.org/show_bug.cgi?id=14682.

也可以看看

arimaStructTStsSmooth

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Kalman Filtering。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。