基于R语言的时间序列指数模型
时间序列:
(或称动态数列)是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列。时间序列分析的主要目的是根据已有的历史数据对未来进行预测。(百度百科)
主要考虑的因素:
1.长期趋势(Long-term trend) : 时间序列可能相当稳定或随时间呈现某种趋势。
时间序列趋势一般为线性的(linear),二次方程式的 (quadratic)或指数函数(exponential function)。
2.季节性变动(Seasonal variation) 按时间变动,呈现重复性行为的序列。 季节性变动通常和日期或气候有关。 季节性变动通常和年周期有关。
3.周期性变动(Cyclical variation) 相对于季节性变动,时间序列可能经历“周期性变动”。 周期性变动通常是因为经济变动。
4.随机影响(Random effects)
时间序列的预测方法:
1.指数平滑法:描述时间序列数据的变化规律和行为,不去试图解释和理解这种变化的原因。
2.ARIMA模型:描述时间序列数据的变化规律和行为,它允许模型中包含趋势变动、季节变动、循环变动和随机波动等综合因素影响。具有较高的预测精度,可以把握过去数据变动模式,有助于解释预测变动规律。
##################################################################################
在本文中主要介绍指数平滑法在R语言时间序列预测中的应用,最后以实例操作指数平滑法时间序列预测。
##################################################################################
含义:
指数平滑法(Exponential Smoothing,ES)是布朗(Robert G..Brown)所提出,布朗认为时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续到未来,所以将较大的权数放在最近的资料。
模型分类及适用条件:
1.简单指数平滑 适用条件:相加模型,并且处于恒定水平和没有季节性变动的时间序列
X1<-HoltWinters(rainseries, beta=FALSE, gamma=FALSE)
2.霍尔特指数平滑法 适用条件:一个增长或降低趋势的、没有季节性的相加模型,X2<-HoltWinters(skirtsseries, gamma=FALSE)
3.Holt-Winters 指数平滑法 适用条件:一个增长或降低趋势并存在季节性可被描述成为相加模型的时间序列。
X3<-HoltWinters(rainseries),其中平滑化依靠三个参数来控制:alpha,beta 和 gamma,分别对应当前时间点上的水平,趋势部分的斜率和季节性部分,参数 alpha,beta 和 gamma
的取值都在 0 和 1 之间,并且当其取值越接近 0 意味着对未来的预测值而言最近的观测值占据相对较小的权重。参数为默认为TRUE,
以上指数平滑只给出原始时间序列所覆盖时期内的预测。但可以通过指定“l.start” 和“b.start” 参数去指定水平和趋势的斜率的初始值。
最后:指数平滑法计算出预测区间,那么预测误差必须是不相关的,而且必须是服从零均值、方差不变的正态分布。
实例:以data Market中leading economic indicator数据为例进行分析预测。
1.导入原始数据,并制作时序图进行数据初步判断,代码如下:
library(xlsx) #导入xlsx包
library(forecast)
library(tseries)
indicator<-read.xlsx(“C:/pythonshu/indicator.xlsx”,1)#导入数据
indicatortimeseries<-ts(indicator,frequency = 12,start =c(2010,1))
plot.ts(indicatortimeseries)#时序图,上升趋势无季节

2.判断为可以使用holt指数模型,故使用holt指数命令进行操作,代码如下:
fithot<-HoltWinters(indicatortimeseries,gamma = FALSE,l.start = 95.1)#指定模型初始值
plot(fithot)#时序图

3.利用构建好的模型进行后10期数据的预测。其中深色为置信区间为95%的预测范围,浅色为80%。
fithot2<-forecast.HoltWinters(fithot,h=10)#预测后10期数据
plot(fithot2)#时序图

4.残差检验:
Box.test(fithot2$residuals,lag=6,type=’Ljung’)#白噪声检验,结果中P值=0.035<0.05,残差为非白噪声序列,说明残差中还蕴含信息,模型可以继续优化
5.模型优化:
用decompose()函数对时间序列进行分解,发现其有明显的上升与季节趋势,故选用Holt-Winters 指数平滑法对其优化。
优化模型及对后12期数据的预测代码:
fithot<-HoltWinters(indicatortimeseries)#指定模型初始值
plot(fithot)#时序图
fithot2<-forecast.HoltWinters(fithot,h=10)#预测后10期数据
plot(fithot2)#时序图



6.对优化后模型的检验:
Box.test(fithot2$residuals,lag=10,type=’Ljung’)#白噪声检验,结果为0.6265>0.05残差为白噪声序列,模型拟合有效
acf(fithot2$residuals,lag.max = 20)#自相关图,非0时不相关
plotForecastErrors <- function(forecasterrors)
{
# make a red histogram of the forecast errors:
mysd <- sd(forecasterrors)
hist(forecasterrors, col=”red”, freq=FALSE)
# freq=FALSE ensures the area under the histogram = 1
# generate normally distributed data with mean 0 and standard deviation mysd
mynorm <- rnorm(10000, mean=0, sd=mysd)
myhist <- hist(mynorm, plot=FALSE)
# plot the normal curve as a blue line on top of the histogram of forecast errors:
points(myhist$mids, myhist$density, type=”l”, col=”blue”, lwd=2)
}
plotForecastErrors(fithot2$residuals)#残差直方图, 预测误差是正态分布,并且均值为零,方差不变。


###########################################################################################
以上就是利用指数平滑构建时间序列预测模型的简单案例,你学会了吗?
部分文献参考:1、百度百科相关词条
2、沈浩老师:时间序列预测技术http://shenhaolaoshi.blog.sohu.com/137698400.html
3, http://www.shujudata.top/基于r语言的时间序列指数模型/
基于R语言的时间序列指数模型的更多相关文章
- 基于R语言的ARIMA模型
A IMA模型是一种著名的时间序列预测方法,主要是指将非平稳时间序列转化为平稳时间序列,然后将因变量仅对它的滞后值以及随机误差项的现值和滞后值进行回归所建立的模型.ARIMA模型根据原序列是否平稳以及 ...
- 概率图模型 基于R语言 这本书中的第一个R语言程序
概率图模型 基于R语言 这本书中的第一个R语言程序 prior <- c(working =0.99,broken =0.01) likelihood <- rbind(working = ...
- R语言解读多元线性回归模型
转载:http://blog.fens.me/r-multi-linear-regression/ 前言 本文接上一篇R语言解读一元线性回归模型.在许多生活和工作的实际问题中,影响因变量的因素可能不止 ...
- R语言利用ROCR评测模型的预测能力
R语言利用ROCR评测模型的预测能力 说明 受试者工作特征曲线(ROC),这是一种常用的二元分类系统性能展示图形,在曲线上分别标注了不同切点的真正率与假正率.我们通常会基于ROC曲线计算处于曲线下方的 ...
- Twitter基于R语言的时序数据突变检测(BreakoutDetection)
Twitter开源的时序数据突变检测(BreakoutDetection),基于无参的E-Divisive with Medians (EDM)算法,比传统的E-Divisive算法快3.5倍以上,并 ...
- 基于R语言的梯度推进算法介绍
通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Bo ...
- 基于R语言的结构方程:lavaan简明教程 [中文翻译版]
lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...
- 【转】基于R语言构建的电影评分预测模型
一,前提准备 1.R语言包:ggplot2包(绘图),recommenderlab包,reshape包(数据处理) 2.获取数据:大家可以在明尼苏达州大学的社会化计算研 ...
- 机器学习-线性回归(基于R语言)
基本概念 利用线性的方法,模拟因变量与一个或多个自变量之间的关系.自变量是模型输入值,因变量是模型基于自变量的输出值. 因变量是自变量线性叠加和的结果. 线性回归模型背后的逻辑——最小二乘法计算线性系 ...
随机推荐
- elementui异步后台校验表单,修改重复校验
elementui简单的form校验这里就不介绍了,这里主要记录下如何通过后台进行指定字段的异步后台校验. 1.导入axios <script src="https://unpkg.c ...
- debian9 开启rc.local服务
由于某些软件并没有增加开启启动的服务,很多时候需要手工添加,一般我们都是推荐添加命令到 /etc/rc.local 文件,但是 Debian 9 默认不带 /etc/rc.local 文件,而 rc. ...
- 从零搭建 ES 搜索服务(三)同义词搜索
一.前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索. 二.安装 ES 同义词插件 ...
- vs2008单元测试
调试是解决错误的过程,测试是发现软件缺陷的过程.每一个软件在交付使用时前都必须经过测试.软件测试是软件开发的重要组成部分,现在已经发展成专门的技术. 在消除了程序中的语法错误和运行错误后,程序仍然不能 ...
- 错误类型“Microsoft.Office.Interop.Word.ApplicationClass”未定义构造函数
原文网址:http://zhidao.baidu.com/link?url=WcvaYFI1JeEGvbjD77nDbGp21sjaNCnCTRLGrU5YjwUGbHbhHJxQolKbsMZbZs ...
- BZOJ.1812.[IOI2005]Riv 河流(树形背包)
BZOJ 洛谷 这个数据范围..考虑暴力一些把各种信息都记下来.不妨直接令\(f[i][j][k][0/1]\)表示当前为点\(i\),离\(i\)最近的建了伐木场的\(i\)的祖先为\(j\),\( ...
- SPOJ.TLE - Time Limit Exceeded(DP 高维前缀和)
题目链接 \(Description\) 给定长为\(n\)的数组\(c_i\)和\(m\),求长为\(n\)的序列\(a_i\)个数,满足:\(c_i\not\mid a_i,\quad a_i\& ...
- Java发邮件基础篇
1. 电子邮件协议 电子邮件的在网络中传输和网页一样需要遵从特定的协议,常用的电子邮件协议包括 SMTP,POP3,IMAP.其中邮件的创建和发送只需要用到 SMTP协议,所以本文也只会涉及到SMTP ...
- java中打开文件流后要关闭后重新打开
记录错误,打开文件流一定要关闭并重新打开文件流,不然取的文件内容永远是第一次取的文件内容: /** * 读取配置文件 */ private Properties readProperties() { ...
- 潭州课堂25班:Ph201805201 django 项目 第十九课 文章主页数据库模型,前后台功能实现 (课堂笔记)
-数据库模型设计 : 文章:新闻表: 字段:图片,标题,摘要,类型,作者,创建时间 标签表 评论表, 轮播图:外键,指向文章的外键表 在 utls 目录下创建 models.py 把其它模型常用的字 ...