打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
用R语言做数据分析——时间序列的分解和预测

  

  建立时间序列数据

  建立时间序列,必须有日期作为数据框的一列。R语言建立时间序列的函数是ts(),它的格式如下:

  ts(gm,frequency=12,start=c(year,month))

  其中,gm表示时间列数据;frequency表示时间单位,它的值常用的有12、4、365,它们分别表示每一个时间单位中有12个月、4个季度、365日观察值,start表示时间序列的开始时间。

  例如,我们构造一个含有30个值的时间序列(1~30),开始时间为2011年3月,以每个月作为观察值。代码如下:

  > a <- ts(1:30, frequency=12, start=c(2011,3))

  > print(a)

  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

  2011 1 2 3 4 5 6 7 8 9 10

  2012 11 12 13 14 15 16 17 18 19 20 21 22

  2013 23 24 25 26 27 28 29 30

  > str(a)

  Time-Series [1:30] from 2011 to 2014: 1 2 3 4 5 6 7 8 9 10 ...

  > attributes(a)

  $tsp

  [1] 2011.167 2013.583 12.000

  $class

  [1] "ts"

  时间序列分解

  时间序列分解就是将时间序列分解为趋势、季节性、周期性以及不规则这几个成分。趋势成分指长时间间隔的大致运动方向,季节性成分指季节性的变化,周期性成分指重复但非周期的波动,最后是不规则成分。

  下面是在时间序列数据AirPassengers上演示时间序列的分解,该数据是由国外某机场1949年到1960年每月乘客总数的数据构成,共有144(=12*12)条数据,时间序列图如下:

  > plot(AirPassengers)

  

  下面使用decompose()函数将数据集分解成不同惩罚呢,分解代码如下:

  > apts <- ts(AirPassengers, frequency=12)

  > f <- decompose(apts)

  >#季节性分解

  > print(f$figure)

  [1] -24.748737 -36.188131 -2.241162 -8.036616 -4.506313 35.402778

  [7] 63.830808 62.823232 16.520222 -20.642677 -53.593434 -28.619949

  > plot(f$figure, type="b", xaxt="n", xlab="")

  > monthNames <- months(ISOdate(2011,1:12,1))

  > axis(1,at=1:12, labels=monthNames, las=2)

  

  > plot(f)

  

  上图中,第一个图表为原始时间序列数据,第二个图表为数据的趋势,第三个图表为季节性因素,最后一个图表为剔除了趋势和季节性因素之后的其他成分。

  时间序列预测

  时间序列预测是根据历史数据来预测未来事件。一个时间序列预测的例子是基于股票过去的形式来预测其开盘价。两个常用的时间序列预测模型为自回归移动平均模型(ARMA)和自回归综合移动平均模型(ARIMA)。

  下面使用ARMA拟合单变量时间序列,并使用拟合模型进行预测,代码如下:

  > fit <- arima(AirPassengers, order=c(1,0,0), list(order=c(2,1,0), period=12))

  > fore <- predict(fit, n.ahead=24)

  > U <- fore$pred + 2*fore$se

  > L <- fore$pred - 2*fore$se

  > ts.plot(AirPassengers, fore$pred, U, L, col=c(1,2,4,4), lty=c(1,1,2,2))

  > legend("topleft",c("Actual","Forecast", "Error Bounds(95% Confidence)"), col=c(1,2,4), lty=c(1,1,2))

  

  图中,实线表示预测值,虚线表示在置信度水平95%下的误差边界。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python | ARIMA时间序列模型预测航空公司的乘客数量
时间序列3--三次指数平滑法(matlab和python实现)
常见的预测模型及算法
用Python预测「周期性时间序列」的正确姿势
【实战】一行R代码实现繁琐的可视化
时间序列挖掘
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服