时间序列 预测分析 R语言
在对短期数据的预测分析中,我们经常用到时间序列中的指数平滑做数据预测,然后根据不同。
下面我们来看下具体的过程
x<-data.frame(rq=seq(as.Date('2016-11-15'),as.Date('2016-11-22'),by='day'),
sr=c(300,697,511,1534,1155,1233,1509,1744))
xl<-ts(x$sr) #构建时间序列
plot.ts(xl)

从上图的结果来看,这是一个增长趋势的时间序列。
模型选择上我们可以依据以下标准进行判断,自己要选用的时间序列算法。
简单指数平滑法——处于恒定水平和没有季节性变动的时间序列。
霍尔特指数平滑法——有增长或下降趋势的,但没有季节性因素的时间序列
霍尔特-温特指数平滑法——有增长或下降趋势,且有季节性变动趋势的时间序列
按照上面的的时间序列趋势来看,数据有增长的趋势,不存在季节性因素,这里我们要选择霍尔特指数平滑法。
接下来我们构建时间序列模型
model<-HoltWinters(xl,gamma=FALSE,l.start=300,b.start=200)
这里的参数,gamma 是用于霍尔特-温特指数平滑法,这里要用false屏蔽,同样构建简单指数平滑时也要把beta参数屏蔽,l.start 通常用的是时间序列的第一个值,b.start表示斜率,这里需要个人基于数据增长趋势给一个预估值,也可以用简单的方法,把较近的两个值进行相见得到一个预估值。
model
Holt-Winters exponential smoothing with trend and without seasonal component.
Call:
HoltWinters(x = xl, gamma = FALSE, l.start = 300, b.start = 200)
Smoothing parameters:
alpha: 0.2437346
beta : 0.01562883
gamma: FALSE
Coefficients:
[,1]
a 1717.1539
b 203.1948
从模型结果来看
alpha 和 beta 参数来看都相对较低(在0到1之间),数值较低说明较远的时间点上的数值权重较高。
plot(model)

从模型的预测值和实际值来看,预测后期的数据重合度较高,整体上模型预测效果应该相对不错。
library(forecast)
premodel<-forecast.HoltWinters(model, h=7) #预测未来7天的数据走势
premodel
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
9 1920.349 1481.805 2358.892 1249.654 2591.044
10 2123.543 1671.763 2575.324 1432.605 2814.482
11 2326.738 1861.705 2791.772 1615.531 3037.946
12 2529.933 2051.626 3008.240 1798.425 3261.441
13 2733.128 2241.522 3224.733 1981.282 3484.974
14 2936.323 2431.390 3441.255 2164.095 3708.550
15 3139.517 2621.227 3657.808 2346.861 3932.174
plot.forecast(premodel)

从增长趋势来看预测结果吻合度较高。
接下来,我们要检验下模型的预测误差是否非存在自相关性,
premodel$residuals
Time Series:
Start = 1
End = 8
Frequency = 1
[1] NA NA 11.000000 831.277018 46.457606 -90.251162 4.704513 35.498288
查看模型预测误差情况,里面存着NA值,我们需要先去掉
b<-premodel$residuals[-which(is.na(premodel$residuals))]
acf(b,lag.max=7,plot=TRUE)

从结果来看,模型滞后5阶内都没有超出置信边界。
Box.test(premodel$residuals,lag=5, type="Ljung-Box")
Box-Ljung test
data: premodel$residuals
X-squared = 1.01, df = 5, p-value = 0.9618
检验的结果来看p值较大,可能存在自相关性。由于样本整体较小,预测误差服从零均值,方差不变的正太分布可能性较小。
整体上来看,上面的预测走势应该是相对比较接近真实情况,这里也给我们一个反思的地方,要使得模型具有足够的说服力,样本数据应该较大的情况下才能得出更准确的预测模型。
时间序列 预测分析 R语言的更多相关文章
- Python中利用LSTM模型进行时间序列预测分析
时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...
- R语言中文社区历史文章整理(类型篇)
R语言中文社区历史文章整理(类型篇) R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...
- Pytorch循环神经网络LSTM时间序列预测风速
#时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大 ...
- 预测分析建模 Python与R语言实现
预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...
- R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理
在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...
- 基于R语言的时间序列指数模型
时间序列: (或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列.时间序列分析的主要目的是根据已有的历史数据对未来进行预测.(百度百科) 主要考虑的因素: 1.长期趋势(Lon ...
- 【R语言学习】时间序列
时序分析会用到的函数 函数 程序包 用途 ts() stats 生成时序对象 plot() graphics 画出时间序列的折线图 start() stats 返回时间序列的开始时间 end() st ...
- survival analysis 生存分析与R 语言示例 入门篇
原创博客,未经允许,不得转载. 生存分析,survival analysis,顾名思义是用来研究个体的存活概率与时间的关系.例如研究病人感染了病毒后,多长时间会死亡:工作的机器多长时间会发生崩溃等. ...
- 利用R语言打造量化分析平台
利用R语言打造量化分析平台 具体利用quantmod包实现对股票的量化分析 1.#1.API读取在线行情2.#加载quantmod包3.if(!require(quantmod)){4. instal ...
随机推荐
- 自己写RTPserver——大约RTP协议
自己写RTPserver--大约RTP协议 本文将带领你一步一步地实现一个简单的手RTP变速器server,旨在了解RTP流媒体传输协议以及有关多媒体编解码器的一些知识. RTP协议的必备知识 要动手 ...
- DDD 回归具体的业务场景,Domain Model 再再重新设计
DDD 回归具体的业务场景,Domain Model 再再重新设计 首先,把最真挚的情感送与梅西,加油! 写在前面 阅读目录: 重申业务场景 Domain Model 设计 后记 上一篇<设计窘 ...
- ASP.NET MVC路由(5)
ASP.NET MVC路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的实 ...
- 初识Identity
初识Identity 摘要 通过本文你将了解ASP.NET身份验证机制,表单认证的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要优势. 目录 身份验 ...
- Gitlab,Github与Bitbucket
这段时间开始做毕设,决定使用git来管理代码和相关的文档. 同时希望有一个远程托管,决定在github.bitbucket,以及我自己搭建的gitlab服务器中间选一个,最终决定使用bitbuckt. ...
- JS逗号、冒号与括号
JavaScript面试时候的坑洼沟洄——逗号.冒号与括号 看完了javaScript数据类型和表达式与运算符相关知识后以为可以对JavaScript笔试题牛刀小试一把了,没想到有一次次的死在逗号 ...
- iOS基础 - Quartz 2D绘图的基本步骤
一.使用Quartz 2D绘图的基本步骤 1) 获取上下文context(绘制图形的地方) 2) 设置路径(路径是用来描述形状的) 3) 将路径添加到上下文 4) 设置上下文属性(设置颜色,线宽, ...
- boke
云/n 计算/v 代表/n IT/x 领域/n 向/p 集约化/v ./w 规模化/v 与/c 专业化/v 道路/n 发展/v 的/u 趋势/n ,/w 是/v IT/x 领域/n 正在/d 发生/v ...
- 细节MARK
在刷vijos1046的时候遇到了一些细节,MARK一下 1.哲学之前有告诫我说,输出long long的数的时候,最好用cout,不然容易出现编译器的问题,今天算是领教了 2.对于数组赋值问题 me ...
- 企业架构研究总结(30)——TOGAF架构内容框架之内容元模型(上)
2. 内容元模型(Content Metamodel) 在TOGAF的眼中,企业架构是以一系列架构构建块为基础的,并将目录.矩阵和图形作为其具体展现方式.如果我们把这些表述方式看作为构建块的语法,那么 ...