R语言-时间序列

时间序列:可以用来预测未来的参数,

1.生成时间序列对象

 1 sales <- c(18, 33, 41,  7, 34, 35, 24, 25, 24, 21, 25, 20,
 2            22, 31, 40, 29, 25, 21, 22, 54, 31, 25, 26, 35)
 3 # 1.生成时序对象
 4 tsales <- ts(sales,start = c(2003,1),frequency = 12)
 5 plot(tsales)
 6 # 2.获得对象信息
 7 start(tsales)
 8 end(tsales)
 9 frequency(tsales)
10 # 3.对相同取子集
11 tsales.subset <- window(tsales,start=c(2003,5),end=c(2004,6))
12 tsales.subset

  结论:手动生成的时序图

2.简单移动平均

案例:尼罗河流量和年份的关系

1 library(forecast)
2 opar <- par(no.readonly = T)
3 par(mfrow=c(2,2))
4 ylim <- c(min(Nile),max(Nile))
5 plot(Nile,main=‘Raw time series‘)
6 plot(ma(Nile,3),main = ‘Simple Moving Averages (k=3)‘,ylim = ylim)
7 plot(ma(Nile,7),main = ‘Simple Moving Averages (k=3)‘,ylim = ylim)
8 plot(ma(Nile,15),main = ‘Simple Moving Averages (k=3)‘,ylim = ylim)
9 par(opar)

  结论:随着K值的增大,图像越来越平滑我们需要找到最能反映规律的K值

3.使用stl做季节性分解

案例:Arirpassengers年份和乘客的关系

 1 # 1.画出时间序列
 2 plot(AirPassengers)
 3 lAirpassengers <- log(AirPassengers)
 4 plot(lAirpassengers,ylab = ‘log(Airpassengers)‘)
 5 # 2.分解时间序列
 6 fit <- stl(lAirpassengers,s.window = ‘period‘)
 7 plot(fit)
 8 fit$time.series
 9 par(mfrow=c(2,1))
10 # 3.月度图可视化
11 monthplot(AirPassengers,xlab=‘‘,ylab=‘‘)
12 # 4.季度图可视化
13 seasonplot(AirPassengers,year.labels = T,main = ‘‘)

                        原始图                                                                                                                                    对数变换

                  总体趋势图                                                                                                                        月度季度图

4.指数预测模型

  4.1单指数平滑

    案例:预测康涅狄格州的气温变化

# 1.拟合模型
fit2 <- ets(nhtemp,model = ‘ANN‘)
fit2
# 2.向前预测
forecast(fit2,1)
plot(forecast(fit2,1),xlab = ‘Year‘,
     ylab = expression(paste("Temperature (",degree*F,")",)),
     main="New Haven Annual Mean Temperature")
# 3.得到准确的度量
accuracy(fit2)

      结论:浅灰色是80%的置信区间,深灰色是95%的置信区间

  4.2有水平项,斜率和季节项的指数模型

    案例:预测5个月的乘客流量

 1 # 1.光滑参数
 2 fit3 <- ets(log(AirPassengers),model = ‘AAA‘)
 3 accuracy(fit3)
 4 # 2.未来值预测
 5 pred <- forecast(fit3,5)
 6 pred
 7 plot(pred,main=‘Forecast for air Travel‘,ylab = ‘Log(Airpassengers)‘,xlab = ‘Time‘)
 8 # 3.使用原始尺度预测
 9 pred$mean <- exp(pred$mean)
10 pred$lower <- exp(pred$lower)
11 pred$upper <- exp(pred$upper)
12 p <- cbind(pred$mean,pred$lower,pred$upper)
13 dimnames(p)[[2]] <- c(‘mean‘,‘Lo 80‘,‘Lo 95‘,‘Hi 80‘,‘Hi 95‘)
14 p

      结论:从表格中可知3月份的将会有509200乘客,95%的置信区间是[454900,570000]

  4.3ets自动预测

    案例:自动预测JohnsonJohnson股票的趋势

1 fit4 <- ets(JohnsonJohnson)
2 fit4
3 plot(forecast(fit4),main=‘Johnson and Johnson Forecasts‘,
4      ylab="Quarterly Earnings (Dollars)", xlab="Time")

      结论:预测值使用蓝色线表示,浅灰色表示80%置信空间,深灰色表示95%置信空间

5.ARIMA预测

步骤:

  1.确保时序是平稳的

  2.找出合理的模型(选定可能的p值或者q值)

  3.拟合模型

  4.从统计假设和预测准确性等角度评估模型

  5.预测

library(tseries)
plot(Nile)
# 1.原始序列差分一次
ndiffs(Nile)

dNile <- diff(Nile)
# 2.差分后的图形
plot(dNile)
adf.test(dNile)
Acf(dNile)
Pacf(dNile)
# 3.拟合模型
fit5 <- arima(Nile,order = c(0,1,1))
fit5
accuracy(fit5)
# 4.评价模型
qqnorm(fit5$residuals)
qqline(fit5$residuals)
Box.test(fit5$residuals,type = ‘Ljung-Box‘)
# 5.预测模型
forecast(fit5,3)
plot(forecast(fit5,3),xlab = ‘Year‘,ylab = ‘Annual Flow‘)

                原始图                                                                                                                                        一次差分图形

            正态Q-Q图(如果满足正态分布,点会落在图中的线上)                                                                                       使用Arima(0,1,1)模型的预测值

Arima自动预测

  案例:预测3个月之后的太阳黑子

1 fit6 <- auto.arima(sunspots)
2 fit6
3 forecast(fit6,3)
4 accuracy(fit6)
5 plot(forecast(fit6,3), xlab = "Year",
6      ylab = "Monthly sunspot numbers")

     结论:函数自动选定(2,1,2)与其他模型相比,AIC的值最小,预测结果更准确

原文地址:https://www.cnblogs.com/luhuajun/p/8504187.html

时间: 2024-08-11 16:04:31

R语言-时间序列的相关文章

R语言时间序列数据应用xts

zoo是时间序列的基础库,是面向通用的设计. xts 是对时间序列库(zoo) 的一种扩展实现.xts 类型继承了zoo 类型,丰富了时间序列数据处理的函数. 一.xts对象的结构和定义 1.xts对象是一个具有时间索引的观测值矩阵,结构如下: xts = matrix + times 2.创建xts对象,函数如下: xts (x= ,  order.by= ,  -  ) 参数   x : 数据,必须是一个向量或者矩阵: order.by: 索引(index),是一个与x行数相同的升序排列的时

R语言时间序列中的时间设置

时间序列的不同时间分段设置 1. 普通的时间序列:年.月.季 1 myserises<-ts(data,start=,end=,frequency=)#其中frequency=1代表年:frequency=12代表月:frequency=4代表季度数据 2. 如果以天为单位的时间序列 1 t<-ts(1:365,frequency=1,start=as.Date("2017-05-01")) 2 s<-as.Date("2017-05-01") 3

R语言时间序列ARMAX建模

建立ARMAX模型需要运用R的dse包,在R的dse包中The ARMA model representation is general, so that VAR, VARX,ARIMA, ARMAX, ARIMAX can all be considered to be special cases. 数据集为天然气炉中的天然气(input)与产生的CO2(output),数据来源为王燕应用时间序列分析第三版附录表A1-24,首先队数据做简要的分析,做出时序图以及协方差图 input<-ts(i

R语言时间序列应用(decompose、Holt-Winters初步)

对于明显的周期性时间序列,可以使用decompose函数对数据进行分解成季节部分.趋势部分.随机部分三种.decompose函数有两种type,即"additive"以及"multiplicative"两种,还有一个fliter选项,表示是否加入线性滤波,一般fliter选择NULL即可.下面的例子展现了使用decompose分析含有季节因素时间序列数据的例子 将某地区1962-1970年平均每头奶牛的月度产奶量数据导入outcome内.对于时间序列数据,常常还要使

R语言时间序列分析

原文:http://a-little-book-of-r-for-time-series.readthedocs.org/en/latest/src/timeseries.html 作者:Avril Coghlan Email:[email protected]  中文档由梁德明.赵华蕾合译:联系方式:[email protected]:内容遵循许可协议CC 3.0 BY 中文档PDF版本地址为:http://doc.datapanda.net/a-Little-Book-of-R-for-T

R语言与数据分析之七:时间序列简单指数平滑

上篇我们对时间序列数列有了整体的认识并将时间序列进行了分解,今天和小伙伴们分享常用预测算法中相对最简单的:简单指数平滑法.简单指数平滑适用于可用相加模型描述,并且处于恒定水平和没有季节变动的时间序列地短期预测. 简单指数平滑法提供了一种方法估计当前时间点上的水平.为了更加准确的估计当前时间的水平,我们使用alpha参数来控制平滑,alpha的取值在0-1之间.当alpha越接近0,临近预测的观测值在预测中的权重就越小. 我们采用伦敦1813年到1912年全部的每年每英尺降雨量来做分析对象,首先读

R语言学习笔记(十三):时间序列

#生成时间序列对象 sales<-c(18,33,41,7,34,35,24,25,24,21,25,20,22,31,40,29,25,21,22,54,31,25,26,35) tsales<-ts(sales,start=c(2003,1),frequency = 12) tsales Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec2003 18 33 41 7 34 35 24 25 24 21 25 202004 22 31 40 29

R语言k-Shape时间序列聚类方法对股票价格时间序列聚类

这次,我们将使用k-Shape时间序列聚类方法检查与我们有业务关系的公司的股票收益率的时间序列. 执行环境如下. R:3.5.1 企业对企业交易和股票价格 在本研究中,我们将研究具有交易关系的公司的价格变化率的时间序列的相似性,而不是网络结构的分析.由于特定客户的销售额与供应商公司的销售额之比较大,当客户公司的股票价格发生变化时,对供应商公司股票价格的反应被认为更大. k-Shape k-Shape [Paparrizos和Gravano,2015]是一种关注时间序列形状的时间序列聚类方法.在我

R语言数据挖掘实战系列(2)

二.R语言简介 R语言是一种为统计计算和图形显示而设计的语言环境,具有免费.多平台支持,同时可以从各种类型的数据源中导入数据,具有较高的开放性以及高水准的制图功能.R是一个体系庞大的应用软件,主要包括核心的R标准包和各专业领域的其他包.R在数据分析.数据挖掘领域具有特别优势. R安装 R可在其主页(https://www.r-project.org/)上获得,根据所选择的平台进行下载安装.安装完成之后启动R.为了方便使用R,可使用免费的图形界面编辑器RStudio,可从https://www.r