1)实验说明
从网址(http://robjhyndman.com/tsdldata/data/nybirths.dat)中下载数据到指定位置(D:\),然后解压到当前文件夹。
导入下载的数据 bank-additional-full.csv 到 R 软件。
通过时间序列分析方法对 1946 年 1 月到 1959 年 12 月的纽约每月出生人口数量进行时间序列分析,预测纽约每月人口数量的影响因素及相关规律。
2)实验环境
R-3.6.0
3)实验目的
① 学会并理解 R 语言中 decompose 函数的使用;
② 理解季节指数预测法分析数据的基本原理过程。
4)实验内容
① 从网站下载数据,read_csv 函数读取数据,并用 ts 函数重采样获得时间序列对象;
② 使用 R 中的 decompose 函数观察分析一个时间序列数据的季节、趋势以及随机变化这三种波动趋势,这三种趋势被存储在变量 ‘seasonal’,‘trend’ 和 ‘random’ 中;
③ 对数据进行季节修正。用原始数据减去 ‘seasonal’ 变量。
5)实验步骤
① 下载并导入数据
births<-read.csv("~bank-additional-full.csv")
birthstimeseries <- ts(births, frequency=12, start=c(1946,1))
#创建时间序列对象,单位时间内观测值的频数为 12,从 1946 年的 1 月份开始。
生成时间序列对象,指定 frequency,以及 start。
② 对生成的时间序列对象可视化
plot(birthstimeseries) #画出生成的时间序列数据的折线图,得到时间序列曲线
从上图可以看到:
这个时间序列在一定月份存在季节性变动:在每年的夏天都有一个出生峰值,在冬季的时候进入波谷。同样,这样的时间序列也可能是一个相加模型,随着时间推移,季节性波动是大致稳定的而不是依赖于时间序列水平,且对于时间的变化,随机波动看起来也是大致稳定的。
a. 思考
纽约每月出生人口数量是在夏季有峰值、冬季有低谷的时间序列,当季节性和随机变动在整个时间段内看起来基本不变,此模型很有可能是用相加模型来描述。
为了估计时间序列的趋势性、季节性和不规则部分,使用 decompose 函数分解时间序列
的波动趋势。
birthstimeseriescomponents<-decompose(birthstimeseries) #进行时间序列的波动趋势分解。
估计出的季节性、趋势的和不规则部分现在被存储在变量seasonal,trend 和random 中。
b. 由上述三种变量查看各个波动趋势数据
birthstimeseriescomponents$seasonal
c. 由上述结果可知:
这里给出了估计出的每年 1-12 月的季节性因素,每年都一样。季节性因素最大值在七月(约 1.46),最小值在二月(约-2.08),标志着每年的峰值在七月,低谷在二月份。
③ 使用 plot()函数
画出时间序列中估计的趋势的、季节性的和不规则的部分,更直观的观察结果。
plot(birthstimeseriescomponents) #对生成时间序列数据的趋势的、季节性和不规则部分可视化。
上图展现出了原始的时间序列图(顶部),估计出的趋势部分图(第二行),估计出的季节性部分(第三行),估计得不规则部分(底部)。可以看到估计出的趋势部分从 1947年的 24 下降到 1948 年的 22,紧随着是一个稳定的增加,直到 1949 年的 27。
④ 修正数据
对纽约每月出生人口数量进行季节性修正,可以用“decompose()”估计季节性部分,也可以把这个部分从原始时间序列中去除。
birthstimeseriescomponents <- decompose(birthstimeseries)
birthstimeseriesseasonallyadjusted <- birthstimeseries - birthstimeseriescomponents$seasonal
#去除原始时间序列中的季节性
plot(birthstimeseriesseasonallyadjusted) #可视化季节修正后的数据
上图显示结果是去除掉季节性变动的修正序列,这个季节性修正后的时间序列现在仅包含趋势部分和不规则变动部分。可以看出 1947 年-1949 年是人口的下降区,1950 年开始是稳定的增长,与修正数据前的结论一致。
6)实验分析
一个季节性时间序列包含趋势部分、季节性部分和不规则部分。分解时间序列是要把时间序列分解成这三个部分,并进行估计。若时间序列是相加模型,在 R 语言中使用 decompose()函数,可以达到估计的目的。通过本次实验,得出了纽约人口数量分析的相关规律,随季节性波动,并呈现上升趋势。也可以将本实验在其他的数据集上进行相关的时间序列分析。
本实验主要对时间序列数据进行了季节调整分析,运用 decompose 函数将数据分成趋势、季节、不规则波动三部分观察,并进一步对数据进行修正,剔除季节影响,以便更好地揭示数据本身的基本趋势,发现数据中隐藏的信息。
7)ps
因数据丢失,该实验暂未复现,暂未精读