时间序列分析及应用r语言pdf_R语言:时间序列经典分析法(二)
题记:本文是个人的读书笔记,仅用于学习交流使用。本文将深入研究时间序列技术。
01
解决什么问题?
前面一章,介绍了时间序列中涉及到的基本概念,本章将在此基础上介绍如何对时间序列的资料进行分析,怎么选择合适的模型。时间序列的分析方法,已经给大家整理出一个流程图,如下图。本章介绍时间序列经典分析法。
02
时间序列组分分解法
根据前文中,时间序列是四大影响因素的综合影响结果(长期趋势,循环周期,季节变动和不规则变动,R语言:时间序列(一)),在各个分量按照加性组合的假定下,对加性模型各分量进行分解,R中使用decompose()函数将各分量分解。下图为使用加性效应关系绘制的分解图。
下图,从上往下分别是原图,长期趋势,季节变动和不规则随机变动图。长期趋势有下降的趋势;季节分量反应有年度变化周期;随机分量曲线绕着0水平波动。
03
趋势拟合法
时间序列中的确定性趋势和季节变动可以用线性回归模型识别,但时间序列的回归模型不同于标准回归模型,因为残差之间存在自相关性,本质上也是一个时间序列,因此这类模型要仔细检查残差。
1.线性回归拟合
###书籍集为每年国王的寿命kingsts len t kingsts.fit summary(kingsts.fit) ##输出主要计算结果par(mfrow=c(3,1),mar=c(3,3,1.6,1),mgp=c(1.8,0.5,0))plot.ts(kingsts) ##绘制时间序列图plot(resid(kingsts.fit),cex.axis=0.8,cex.lab=0.8) ##画出残差图acf(resid(kingsts.fit),cex.axis=0.8,cex.lab=0.8) ##做残差的acf图Box.test(kingsts.fit.fit$residuals) ##对残差做检验## p-value = 0.08575
2.曲性回归拟合
kingsts.fit1 summary(kingsts.fit1) ##调整R2=0.2542summary(kingsts.fit) ##调整R2=0.1419 Box.test(kingsts.fit1$residuals) ##p-value = 0.4331acf(kingsts.fit1$residuals) ##无相关性
3.结果解释
1.国王寿命的数据作图(上上图1),可看到有一个先下降后上升的长期趋势,因此可以做趋势拟合。
2.先配合一阶回归模型,并对拟合的模型做残差检验,分别用acf()和Box.test()函数检验(上上图2和3)。可看到残差图没有任何趋势,残差相关图无相关性,残差检验的P值大于0.05,也证实无相关性。
3.根据其数据先下降后上升的趋势,可以尝试拟合下二次曲线,并对拟合完的模型残差检验,其残差没有相关性,且比对第一个模型和第二个模型的调整R2发现,第二个模型的R2更大,说明二次曲线更适合这个数据,上图的蓝色线为拟合的直线模型,红线为拟合的曲线模型,看上去曲线模型拟合更好。
04
平滑法
根据不同的历史间隔远近在预报中所起的作用不同而给予不同的权重,历史较近的观察值对当前值影响较大,应给予较大的权重;反之,历史较远的观察值对当前值的影响较小,应赋予较小的权重。该方法特别适合变化比较缓慢的时间序列资料的分析。
简单指数匀滑法适合不含趋势和季节变动资料,Holt-Winters法则是将简单指数匀滑推广到含有趋势和季节变动的时间序列资料的分析。在R中都采用HoltWinter()函数分析,其具有下面的基本结构:
HoltWinters(x, alpha = NULL, beta = NULL, gamma = NULL, seasonal = c("additive", "multiplicative"), start.periods = 2, l.start = NULL, b.start = NULL, s.start = NULL, optim.start = c(alpha = 0.3, beta = 0.1, gamma = 0.1), optim.control = list())
函数中的x为时间序列资料的名称,alpha为水平参数α,beta为趋势参数β,gamma为季节参数γ。当beta和gamma都赋值为FALSE时,模型就没有趋势分量和季节分量,也就是简单指数匀滑法。当gamma赋值为FALSE时,模型就没有季节分量。
简单指数匀滑法
空气中颗粒物PM10数据集为例 pm10.ts pm10.ts.hw coef with(pm10.ts.hw,c(alpha,beta,gamma,coef,SSE))
不含季节趋势指数匀滑
pm10.ts.hw.NS coef with(pm10.ts.hw.NS,c(alpha,beta,gamma,coef,SSE))
包含长期趋势和季节趋势的Holt-Winters匀滑
pm10.ts.hw.S coef with(pm10.ts.hw.S,c(alpha,beta,gamma,coef,SSE)) ##提取匀滑参数和当前基础水平a和趋势分量bpm10.ts.hw.S$coefficients[c(3:6,365+2)] ##提取前4个和最后一个季节的匀滑参数s
上述三个不同模型的结果解释:
1.该序列没有明显的长期趋势,但可见明显的季节周期,这里为了和后面对比,因此姑且以此数据作为例子进行简单指数平滑。其水平参数α=0.73,说明某一天的pm10浓度受近期的影响比较大。其趋势和季节参数为0,SSE为0.57。
2. 第二部分,仍以该例子,假使其没有季节分量gamma=F。看到β=0.02,说明其长期趋势不明显。SSE=0.59
3.第三部分,考虑长期趋势和季节变动,看到α=0.61,表明近期污染水平对当前值影响大于远期污染水平。β=0表明趋势分量不需要随时间更新,γ=0.7,该序列存在明显季节周期。a=0.082是当前的基础水平,b=-1.1699e-06是当前的趋势,s1,s2等则是每天的季节指数。输出的SSE=0.52,误差低于前面两个模型,该模型构建比较合适。
采用Holt-winters法的加性模型配合时间序列资料的图形见下图:
plot(pm10.ts.hw.S$fitted) ##加性模型拟合图
图中xhat 为用模型参数估计值回代所得的期望值;level为水平值图,即稳定部分的估计值;trend为时间趋势图,结果未显示趋势,故为一条平行线;season为季节分量图,显示两个周期。2008-2009和2009到2010,预报未来一年的pm10含量图形见下图。
pm10.ts.hw.S.pre ts.plot(pm10.ts,pm10.ts.hw.S.pre,lty=1:2)
上图中2007-2010年的实线部分为观察值,2010-2011年的虚线部分为预测值。
05
总结
本文作为时间序列的第二章,主要介绍经典时间序列的分析方法,包括组分分解,趋势拟合和平滑法,详细介绍HoltWinter()函数的使用和结果解读,趋势拟合的缺点要有长期稳定趋势,而在商业和经济中往往只有一段线性特征,这种情况要用随机时间序列分析,后面的ARMA模型。
06
参考文献
彭晓武等.R软件及其环境流行病学应用.中国环境出版社
Jonathan D.Cryer .时间序列分析及应用.机械工业出版社
Cory Leismester.精通机器学习:基于R.人民邮电出版社
作者介绍:医疗大数据统计分析师,擅长R语言。
欢迎各位在后台留言,恳请斧正!
更多阅读:
R语言:时间序列(一)
R软件:广义相加模型(GAM)
基于Lasso回归筛选变量构建Cox模型并绘制Nomogram
R语言Logistic回归模型深度验证以及Nomogram绘制
时间序列分析及应用r语言pdf_R语言:时间序列经典分析法(二)相关推荐
- 水稻微生物组时间序列分析精讲1-模式图与主坐标轴分析
写在前面 上周五我们分享了3月底发表的的 <水稻微生物组时间序列分析>的文章,大家对其中图绘制过程比较感兴趣.一上午收到了超30条留言,累计收到41个小伙伴的留言求精讲. 我们也争取花时间 ...
- 时间序列分析之AR模型、MA模型和ARMA模型(二)
此学习笔记来自于王燕老师编著的<时间序列分析-基于R> 对一个时间序列预处理后检验出该序列为平稳时间序列说明该模型有提取信息的价值,就要进行下一步的模型建立来拟合该模型然后做出预测.下面介 ...
- 时间序列分析及应用r语言pdf_R语言时间序列分析(十一):指数平滑法
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...
- 《时间序列分析及应用.R语言》第十一章阅读笔记
第11章 11.1干预分析 library(TSA) win.graph(width = 4.875,height = 2.5,pointsize = 8) data(airmiles) plot(l ...
- R语言应用实战-基于R语言的综合评价(层次分析法AHP为例)
一.综合评价的基本概念 对一个事物的评价往往会涉及多个因素或者多个指标,评价是在多个因素相互作用下的一个综合判断.多指标综合评价方法具有以下的特点:包含若干个指标,分别说明被评价对象的不同方面,评价方 ...
- python时间序列分析航空旅人_用python做时间序列预测一:初识概念
利用时间序列预测方法,我们可以基于历史的情况来预测未来的情况.比如共享单车每日租车数,食堂每日就餐人数等等,都是基于各自历史的情况来预测的. 什么是时间序列? 时间序列,是指同一个变量在连续且固定的时 ...
- 第十三章 时间序列分析和预测
时间序列的关键是确定出已有的时间序列的变化模式,并假定这种模式会延续到未来. 时间序列分析就其发展的历史阶段和所使用的统计分析方法来看,有传统的时间序列分析和现代时间序列分析.下文主要介绍传统的时间序 ...
- R语言mgcv包时间序列分析在空气污染与健康领域的应用(1)
在空气污染与健康研究领域,经常需要用时间序列方法将随时间变化的污染物暴露资料和随时间变化的事件发生数资料联系起来,分析人群健康结局与暴露水平之间的关系. 时间序列分析是根据系统观测得到的时间序列数据, ...
- 时间序列与R语言应用(part1)--时间序列基本概念
学习笔记 参考书目:<计量经济学>.<计量经济学模型及R语言应用>.<时间序列分析及应用R语言> 时间序列分析之基本概念 时间序列的含义 从统计上来说,时间序列就是 ...
最新文章
- 如何成为一名合格的自动驾驶工程师
- django05:ORM示例--person 增删改查
- 洛谷 P3455 [POI2007]ZAP-Queries (莫比乌斯反演)
- leveldb使用指南
- kubernetes资源--RC和RS
- win11网络配置文件类型怎么更改 Windows11更改网络配置文件类型的步骤教程
- C++ string split()和 replaceAll()
- SQL2005,如何将数据库从一台电脑上转到另一台电脑上?
- 网络安全[脚本小子] -- SSI注入
- 设计模式之调停者模式
- java如何获取网页全部内容
- 元宇宙中N中AR试鞋体验
- 《MATLAB语音信号分析与合成(第二版)》:第7章 语音信号的减噪
- mysql使用SUM求和精度丢失
- python识别中文人名_使用Python在NLP中的命名实体识别中提取人名
- 我如何从月薪1800到年薪百万到自由职业?
- [活动召集]福建PHP社区聚会
- C++基于OpenCV实现实时监控和运动检测记录
- 关于初学者用哪种C/C++编译器(集成开发环境)的问题
- 大华摄像头网线直连pc(win10和ubuntu1804)
热门文章
- python sharedctypes 多进程性能测试
- goland os.Open 路径错误
- inconsistent use of tabs and spaces in indentation
- Python lambda表达式与函数式编程
- Java 8中HashMap冲突解决
- ubuntu中RAR解压缩中文文件名失败的解决方法
- Cissp-【第4章 通信与网络安全】-2021-3-12(393页-407页)
- vue 输入框限制3位小数_vue+element 中 el-input框 限制 只能输入数字及几位小数(自定义)和输入框之键盘...
- java 格式匹配,java匹配电话格式的正则表达式
- linux kill tl进程,【linux】kill ;杀死某一用户下的所有进程