SPSS时间序列分析

2018 年 9 月 27 日 R语言中文社区
作者简介Introduction

郑连虎,在数学学院取得理学学位的文科生,中国人民大学硕博连读生在读,山东大学管理学学士、理学学士

个人公众号:阿虎定量笔记


本期使用伊利湖水位数据(Monthly Lake Erie Levels,1921-1970)演示,数据在后台回复“时间序列”即可获得。


1

数据处理

定义日期

首先,点击“数据-定义日期”。接着,在弹出的“定义日期”对话框内,设置日期的格式。在本期演示中选择“年份、月份”作为日期格式。确定日期格式后,“数据视图”可以看到新插入的日期“Year”“Month”“Date”(新变量默认名称):



平稳性判断

绘出序列图后,平稳时间序列不需要这一步处理。

点击“分析-预测-序列图”,绘制伊利湖水位数据的时间序列图:

从上图可以初步判断,伊利湖水位50年来呈现出非平稳趋势。但这仅是从时序图上的直观判断,还要从该序列的自相关函数和偏相关函数上给出更为理性的判断。点击“分析-预测-自相关”,绘制伊利湖水位数据的自相关和偏相关图:

从伊利湖水位数据的自相关和偏相关图可以看出,数据的自相关函数和偏相关函数没有衰减到0,即没有进入两倍标准差区域,这意味着伊利湖水位数据是非平稳的。

对于含有趋势的非平稳时间序列,通常可以通过引入ARIMA 模型对其变换。ARIMA模型对于非平稳时间序列采用的方法是,运用差分运算提取序列的趋势信息,最终把序列变为平稳序列。ARIMA模型的形式为ARIMA(p,d,q),其中p为自回归项,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。

具体到这组数据,可以通过对指数关系做对数变换后将其转化为线性关系,然后再对其进行适当的差分来消除序列的线性趋势,并逐步消除方差的变化,使其最终达到平稳。

“差分”转换处理,其中键入的是“2”即后一个数据减前一个数据所得的值。“自然对数转换”,对原始的数据进行自然对数的转换。在“序列图”中同时选择这两种处理方式:

对伊利湖水位数据取对数并作二阶差分后得时间序列图如下图:


季节分解

季节性变动指由于季节因素导致的时间序列的有规则变动,无季节变动的数据不需要这一步处理。季节分解主要方法包括按月或季平均法和移动平均趋势剔除法。根据序列图的分析,序列的波动随着季节的波动越来越大,所以选择乘法模型。点击“分析-预测-周期性分解”,弹出“周期性分解”对话框,确认设置:

新增四个变量:ERR表示的误差分析;SAS表示的是季节因素校正后序列;SAF表示的季节因子;STC表示的是长期趋势和循环变动序列。把新出现的四个变量、平均值和DATE_做序列图:


2

建模预测

方法1:专家建模器

点击“分析-预测-创建模型”,弹出“时间序列建模器”。在“变量”选项下,将需要进行时间序列预测的“水位”变量拖入图示的“因变量”框内;然后确定中间的“方法”,在下拉列表中选择“专家建模器”项,点击右侧的“条件”按钮,弹出“时间序列建模器:专家建模器条件”对话框。在“时间序列建模器:专家建模器条件”对话框的“模型”选项卡中,在“模型类型”框中选择“所有模型”项,并勾选“专家建模器考虑季节性模型”复选框,点“继续”;在“时间序列建模器”对话框中,切换至“保存”选项卡中,勾选“预测值”复选框,点击“导出模型条件”框中“XML文件”后面的“浏览”,然后设置导出的模型文件和保存路径,预测值就会在数据中新增一列,点击“确定”:

点击“分析-预测-应用模型”,用刚刚保存的模型预测1971年的水位变化,点击“保存”,勾选“预测值”之后点击确定:

把原始数据及预测值一起绘制序列图:


方法2:指数平滑法

指数平滑法的使用特点是将较大的权数放在最近的资料。依次点击第一排菜单栏里面的“分析-预测-创建模型”,弹出“时间序列建模器”。在“变量”选项下,将需要进行时间序列预测的“水位”变量拖入图示的“因变量”框内;在方法中,选择“指数平滑法”;在“Statistics”中勾选“平稳的 R 方”“拟合优度”“显示预测值”;在“图表”中选“观察值”“预测值”“拟合值”;在“保存”中勾选“预测值”;在“选项”下填写需要预测到的指定日期。全部设置完成后,点击“确定”,即可在输出文档里面看到时间序列建模程序显示的模型参数及预测的结果;


方法3:ARIMA模型

在平稳性判断阶段知道,还可以使用 ARIMA 模型来进行时间序列的预测,使用的特点是将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型。ARIMA模型中ARIMA(p,d,q) 称为差分自回归移动平均模型,AR是自回归,p为自回归项;MA为移动平均,q为移动平均项数,d为时间序列成为平稳时所做的差分次数。使用的方法和上面两种类似,这里不再赘述。


精彩回顾

R语言绘图:28个实用程序包

Stata绘图:简单好用的37条外部命令


公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

登录查看更多
4

相关内容

时间序列(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。经济数据中大多数以时间序列的形式给出。根据观察时间的不同,时间序列中的时间可以是年份、季度、月份或其他任何时间形式。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
【UCLA】基于深度神经网络的工业大模型预测控制,36页ppt
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
【华侨大学】基于混合深度学习算法的疾病预测模型
专知会员服务
96+阅读 · 2020年1月21日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
R语言时间序列分析
R语言中文社区
12+阅读 · 2018年11月19日
R语言数据挖掘利器:Rattle包
R语言中文社区
21+阅读 · 2018年11月17日
R语言之数据分析高级方法「时间序列」
R语言中文社区
17+阅读 · 2018年4月24日
干货 | 受限玻尔兹曼机基础教程
机器学习算法与Python学习
7+阅读 · 2018年3月27日
【入门】数据分析六部曲
36大数据
18+阅读 · 2017年12月6日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Arxiv
7+阅读 · 2020年3月1日
Arxiv
24+阅读 · 2018年10月24日
Arxiv
5+阅读 · 2018年5月28日
Arxiv
21+阅读 · 2018年5月23日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
最新《自动微分手册》77页pdf
专知会员服务
100+阅读 · 2020年6月6日
商业数据分析,39页ppt
专知会员服务
160+阅读 · 2020年6月2日
【UCLA】基于深度神经网络的工业大模型预测控制,36页ppt
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
【华侨大学】基于混合深度学习算法的疾病预测模型
专知会员服务
96+阅读 · 2020年1月21日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
R语言时间序列分析
R语言中文社区
12+阅读 · 2018年11月19日
R语言数据挖掘利器:Rattle包
R语言中文社区
21+阅读 · 2018年11月17日
R语言之数据分析高级方法「时间序列」
R语言中文社区
17+阅读 · 2018年4月24日
干货 | 受限玻尔兹曼机基础教程
机器学习算法与Python学习
7+阅读 · 2018年3月27日
【入门】数据分析六部曲
36大数据
18+阅读 · 2017年12月6日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
Top
微信扫码咨询专知VIP会员