covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践

covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践_第1张图片

这是关于时间序列的第N篇文章,本文将介绍ARIMAX模型,简单来说就是在ARIMA的基础上增加一个外生变量。ARIMAX和ARIMA相比在理论上没有太多新的内容,所以本文直接介绍在R里怎么一步一步跑ARIMAX。

在阅读这篇文章前,需要对ARIMA有一定了解,传送门在这里:

0100:时间序列分析|AR(p),MA(q), ARIMA入门及R中实践​zhuanlan.zhihu.com
covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践_第2张图片
0100:时间序列分析|ARIMA模型分步骤解析及R中实践​zhuanlan.zhihu.com
covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践_第3张图片

那么直接进入正题,来ARIMAX吧~


先举一个直观的需要用ARIMAX的例子:假设你在经营一家游乐园,你有过去三年游乐园的daily attendance数据,以及daily events数据,想要预测未来的daily attendance。

其中input data就是历史的daily attendance和daily events, output是未来的daily attendance。

如果用ARIMA的话,那么input变量只能是历史的daily attendance, 而想要将历史的daily events也作为一个因变量的话,就可以用ARIMAX模型。

假设下面咱们要解决的就是这个问题,步骤很简单,来看下R中要怎么一步一步run code吧:

第一步:时间序列数据集

  1. 如果没有数据的话,可以创建数据集:使用以下code建立一个ARIMA(1,1,1)的时间序列数据:
historical_attendance = arima.sim(list(order = c(1,1,1), ar = 0.9, ma = -0.4, n = 200)

2. 如果已有数据的话,记得将你的数据转化为时间序列数据

historical_attendance = ts(data$historical_attendance, frequency = 365.25/7, start= decimal_date(ymd('2015-06-27')))

第二步:把外生变量转变为matrix格式,这步极其重要! 我当时不知道要对外生变量进行格式转化,卡了很久找不到BUG,最后做code review的时候老板一眼就看出了问题所在。

xreg = as.matrix(data$historical_events)

第三步:跑ARIMAX模型,如果你数据量比较大的话,这步要跑好久。我大概300数据量,跑了一小时多。

arimax <- auto.arima(historical_attendance,xreg = xreg,seasonal.test="ch", parallel=TRUE,num.cores=8,stepwise=FALSE,approximation=FALSE)

第四步:做预测

做预测前,记得把test集中的外生变量也转化为matrix格式

xreg_next = as.matrix(data$future_events)  
fcast_arimax <- forecast(arimax, h=10,xreg = xreg_next)

第五步:做一下可视化,画个图什么的。

只要掌握了ARIMA,ARIMAX就很简单的。对ARIMA不熟的, 一定要把这篇先看懂哦:

0100:时间序列分析|ARIMA模型分步骤解析及R中实践​zhuanlan.zhihu.com
covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践_第4张图片

PS: 我将开始频繁更新时间序列的各种模型了,包括模型本身的讲解和在R中怎么写code。

已更新的有:指数平滑ETS, 自回归AR, 移动平均MA,ARMA, ARIMA, ARIMAX,TABTS。

接下来会更新的模型包括:TABTS,TSAR, LSTM等

欢迎关注专栏:

一锅数据汤​zhuanlan.zhihu.com
2d56428228c2b75f3a069050cae5d3c7.png

你可能感兴趣的:(covariance,matrix,r语言)