R语言混合时间模型预测对时间序列进行点估计

全文连接:http://tecdat.cn/?p=6078

原文出处:拓端数据部落公众号

混合预测 - 单模型预测的平均值 - 通常用于产生比任何预测模型更好的点估计。本文展示了如何为混合预测构建预测区间,这种预测的覆盖范围比最常用的预测区间更准确(即80%的实际观测结果在80%置信区间内)。

 

预测区间

预测的问题是在预测组合中使用的预测区间。预测区间是与置信区间相似但不相同的概念。预测区间是对尚未知但将在未来的某个点观察到的值(或更确切地说,可能值的范围)的估计。而置信区间是对基本上不可观察的参数的可能值范围的估计。预测区间需要考虑模型中的不确定性,模型中参数的不确定估计(即那些参数的置信区间),以及与预测的特定点相关联的随机性。

混合预测

我结合auto.arima()ets(),有效地进行混合预测。为了更方便,我创建了一个混合预测并生成forecast类对象的函数。


library(forecast)

深灰色区域是80%预测区间,浅灰色区域是95%预测区间。 

测试M3

结果如下:

变量准确度
ets_p800.75
ets_p950.90
auto.arima_p800.74
auto.arima_p950.88
hybrid_p800.83
hybrid_p950.94

混合方法接近预期的准确率,而两个预测区间ets()auto.arima()效果不太好。

以下是我在M3数据上测试的方法。我构建了一个函数accuracy来帮助,它利用了类预测对象返回一个名为“lower”的矩阵和另一个名为“upper”的矩阵,每个预测区间都有一列。

#------------------安装------------------------

library(forecast)
 ly = "myfont"))

pi_accuracy <- function(fc, yobs){
   # 检查类的对象的预测间隔是否成功
 
   In <- (yobsm  
 }

实际上拟合所有预测相对简单。

#============使用默认值进行预测===============
num_series <- length(M3) # ie 3003
results <- matrix(0, nrow = num_series, ncol = 7)

for(i in 1:num_series){
   cat(i, " ")        # 循环过程
   series <- M3[[i]]
 ccess
   
   fc1 <- fc3$fc_ets
   r 
   geom_smooth(se = FALSE, method = "lm") +
   theme(panel.grid.minor = element_blank())

预测

变量准确度
ets_p800.72
ets_p950.88
auto.arima_p800.70
auto.arima_p950.86
hybrid_p800.80
hybrid_p950.92
#=====用Bootstrapping算法代替预测区间=============

num_series <- length(M3)
resultsb <- matrix(0, nrow = num_series, ncol = 7)

for(i in 1:num_series){
   cat(i, " ")
   
   gather(variable, value, -h) %>%
   mutate(weighted_val ighted_value) / sum(h), 2))

结论

  • 根据M3数据进行测试,通过组合ets()auto.arima()形成的预测达到期望的水平,即80%预测区间在80%的时间内包含真值,95%的预测区间包含不到95%的时间的真值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值