分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测

分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测_第1张图片

建立时间序列数据

建立时间序列,必须有日期作为数据框的一列。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

> 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)

分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测_第2张图片

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

> apts

> f

>#季节性分解

> print(f$figure)

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

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

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

> monthNames

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

分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测_第3张图片

> plot(f)

分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测_第4张图片

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

时间序列预测

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

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

> fit

> fore

> U

> L

> 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))

分解预测时间序列c 语言,用R语言做数据分析——时间序列的分解和预测_第5张图片

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

文章来源于: 科技最智能,版权归原作者所有,如有侵权,请联系 [email protected] 删除。

你可能感兴趣的:(分解预测时间序列c,语言)