当前位置:   article > 正文

时间序列分析Nile案例(基于R)_r怎么导入nile数据集

r怎么导入nile数据集

时间序列分析Nile案例

在 R 的 datasets 包中,包含一个 Nile 的数据集,该数据是一个时间序列数据,主要记录了 1971 年-1970 年尼罗河每年的流量,请对其进行分析:

数据预处理

数据概况:

> Nile
Time Series:
Start = 1871 
End = 1970 
Frequency = 1 
  [1] 1120 1160  963 1210 1160 1160  813 1230 1370 1140  995  935 1110  994 1020  960 1180  799  958 1140 1100 1210 1150 1250 1260 1220
 [27] 1030 1100  774  840  874  694  940  833  701  916  692 1020 1050  969  831  726  456  824  702 1120 1100  832  764  821  768  845
 [53]  864  862  698  845  744  796 1040  759  781  865  845  944  984  897  822 1010  771  676  649  846  812  742  801 1040  860  874
 [79]  848  890  744  749  838 1050  918  986  797  923  975  815 1020  906  901 1170  912  746  919  718  714  740
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

该数据集中,数据集包含100个样本数据,时间跨度从1871年到1970年。

  1. 导入需要的包 ,导入需要的包;
library(dplyr)
library(tidyr)
library(zoo)
library(tseries)
library(ggfortify)
library(gridExtra)
library(forecast)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  1. 绘制相应时序图 ,绘制相应时序图,观察序列,以初步判断类型。
#以R自带的时间序列Nile(尼罗河的流量)为例
data(Nile)
Nile=Nile
#画出时序图和自相关图
autoplot(Nile)+ggtitle("尼罗河流量变化趋势")
plot(Nile,type="l",xlab="时间",ylab="尼罗河流量")
Box.test(Nile,type ="Ljung-Box")
## p-value =4.214-07 说明该序列非随机数据,即不为白噪声
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

运行结果:

> Box.test(Nile,type ="Ljung-Box")

	Box-Ljung test

data:  Nile
X-squared = 25.594, df = 1, p-value = 4.214e-07
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可发现L B检验中P-value=4.214-07<0.05,故该序列非白噪声序列。有值得挖掘的信息。
在这里插入图片描述
3. 绘制自相关图和偏自相关图,以确定模型参数

p1 <- autoplot(acf(Nile,lag.max = 40,plot = F))+
  ggtitle("Nile序列自相关图")
p2 <- autoplot(pacf(Nile,lag.max = 40,plot = F))+
  ggtitle("Nile序列偏自相关图")
gridExtra::grid.arrange(p1,p2,nrow=2)
  • 1
  • 2
  • 3
  • 4
  • 5

运行结果:
在这里插入图片描述
可发现自相关图快速地收敛,偏自相关图也是1阶截尾,且可发现,存在一定的周期性。可利用auto.arima()函数自动确定最优模型。
4. 利用auto.arima()函数确定模型参数

auto.arima(Nile)#自动创建最优模型
  • 1

结果如下:

> auto.arima(Nile)#自动创建最优模型
Series: Nile 
ARIMA(1,1,1) 

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 20177:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

可发现,最优模型为ARIMA(1,1,1)。

  1. 对该序列用ARIMA(1,1,1)进行拟合:
ARIMA <- arima(Nile, c(1, 1, 1))
summary(ARIMA)
Box.test(ARIMA$residuals,type ="Ljung-Box")
## p-value = 0.7431,此时,模型的残差已经是白噪声数据,数据中的信息已经充分的提取出来了
  • 1
  • 2
  • 3
  • 4

结果如下:

> summary(ARIMA)

Call:
arima(x = Nile, order = c(1, 1, 1))

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 19769:  log likelihood = -630.63,  aic = 1267.25

Training set error measures:
                    ME     RMSE      MAE       MPE     MAPE     MASE        ACF1
Training set -16.06603 139.8986 109.9998 -4.005967 12.78745 0.825499 -0.03228482
> Box.test(ARIMA$residuals,type ="Ljung-Box")

	Box-Ljung test

data:  ARIMA$residuals
X-squared = 0.10739, df = 1, p-value = 0.7431
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

模型拟合后,对残差进行了白噪声检验,可发现P-value=0.7431>0.05,故残差是白噪声,即可说明,模型拟合良好。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/644082
推荐阅读
相关标签
  

闽ICP备14008679号

        
cppcmd=keepalive&