R学习日记——分解时间序列(季节性数据)

时间:2021-02-28 17:15:13

上篇说明了分解非季节性数据的方法。就是通过TTS包的SMA()函数进行简单移动平均平滑。让看似没有规律或没有趋势的曲线变的有规律或趋势。然后再进行时间序列曲线的回归预测。

本次,开始分解季节性时间序列。
 
一个季节性时间序列中会包含三部分,趋势部分、季节性部分和无规则部分。分解时间序列就是要把时间序列分解成这三部分,然后进行估计。
 
对于可以使用相加模型进行描述的时间序列中的趋势部分和季节性部分,我们可以使用 R中的“decompose()” 函数来估计。这个函数可以估计出时间序列中趋势的、季节性的和不规则的部分,而此时间序列须是可以用相加模型描述的。  

“decompose()” 这个函数返回的结果是一个列表对象, 里面包含了估计出的季节性部分, 趋势部分和不规则部分, 他们分别对应的列表对象元素名为“seasonal” 、 “trend” 、 和“random” 。 

示例:纽约每月出生人口数量是在夏季有峰值、 冬季有低谷的时间序列。
 
> births <- scan("http://robjhyndman.com/tsdldata/data/nybirths.dat") 
Read
168 items
> birthstimeseries <- ts(births, frequency=12, start=c(1946,1))
> ts.plot(birthstimeseries)
R学习日记——分解时间序列(季节性数据)
> birthcomponents <- decompose(birthstimeseries)
> plot(birthcomponents)
R学习日记——分解时间序列(季节性数据)
而当你需要剔除某个趋势时(我们就去掉季节因素),我们可以运用减法去掉该因素,下图就是去掉季节性因素后的修正序列。
> birthstimeseriesseasonallyadjusted<-birthstimeseries-birthcomponents$seasonal
> plot(birthstimeseriesseasonallyadjusted)
R学习日记——分解时间序列(季节性数据)
留下记录,供日后复习应用。