Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用dlm包、MLE和贝叶斯推理建立R中的动态线性模型进行参数估计_R_Time Series - Fatal编程技术网

用dlm包、MLE和贝叶斯推理建立R中的动态线性模型进行参数估计

用dlm包、MLE和贝叶斯推理建立R中的动态线性模型进行参数估计,r,time-series,R,Time Series,这是背景。我有一个代表每日销售额的时间序列。我建立了一些模型,比如ARIMA(ARIMA)、STL分解(STL)、Holt-winter(hw)和指数平滑状态空间模型(由于返回的模型显示出加性误差/趋势/季节性,ets的结果简化为hw模型),等等 无论如何,数据是非平稳的,代表趋势和每周季节性,这也可以通过光谱分析/周期图来证明。通过使用1步到15步预测的交叉验证,我发现stl分解在MAE中给了我最好的结果 然后,我开始研究一个动态线性模型,看看是否可以建立一个更好的预测模型。该模型也是用R编写

这是背景。我有一个代表每日销售额的时间序列。我建立了一些模型,比如ARIMA(
ARIMA
)、STL分解(
STL
)、Holt-winter(
hw
)和指数平滑状态空间模型(由于返回的模型显示出加性误差/趋势/季节性,
ets
的结果简化为
hw
模型),等等

无论如何,数据是非平稳的,代表趋势和每周季节性,这也可以通过光谱分析/周期图来证明。通过使用1步到15步预测的交叉验证,我发现stl分解在MAE中给了我最好的结果

然后,我开始研究一个动态线性模型,看看是否可以建立一个更好的预测模型。该模型也是用R编写的,带有
dlm
,它是局部线性+季节性+ARMA模型,代码如下

build <- function(parm) {
    level0 <- 20
    slope0 <- 1
    # Level + Trend
    trend <- dlmModPoly(order = 2, dV = parm[1], dW = exp(parm[2:3]),
           m0 = c(level0, slope0),
           C0 = 400*diag(2))
    # Seasonal Term
    # Season Factor model
    # season <- dlmModSeas(frequency = 7, dW = c(parm[4], rep(0, 5)))
    # Fourier Form Seasonal Model
    season <- dlmModTrig(s = 7, q = 2, dW = rep(c(parm[4], parm[5]), each = 2))
    # ARMA Term
    arma <- dlmModARMA(ar = ARtransPars(parm[6:7]), ma = parm[8:9], sigma2 = parm[10])
    return(trend + season + arma)
}
# MLE for parameter estimation
init <- c(1e-07, -3, -1, 5, 4, 0.5, 0.4, 0.7, 0.3, 1)
fit_dlm <- dlmMLE(y, parm = init, build, hessian = TRUE)

dlmSales <- build(fit_dlm$par)
f1 <- dlmForecast(dlmSales, n = 16)

build我也有类似的问题,你能帮助我如何使用r在状态空间中建立ARIMA模型吗?