赞
踩
在 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
该数据集中,数据集包含100个样本数据,时间跨度从1871年到1970年。
library(dplyr)
library(tidyr)
library(zoo)
library(tseries)
library(ggfortify)
library(gridExtra)
library(forecast)
#以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 说明该序列非随机数据,即不为白噪声
运行结果:
> Box.test(Nile,type ="Ljung-Box")
Box-Ljung test
data: Nile
X-squared = 25.594, df = 1, p-value = 4.214e-07
可发现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阶截尾,且可发现,存在一定的周期性。可利用auto.arima()函数自动确定最优模型。
4. 利用auto.arima()函数确定模型参数;
auto.arima(Nile)#自动创建最优模型
结果如下:
> 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
可发现,最优模型为ARIMA(1,1,1)。
ARIMA <- arima(Nile, c(1, 1, 1))
summary(ARIMA)
Box.test(ARIMA$residuals,type ="Ljung-Box")
## p-value = 0.7431,此时,模型的残差已经是白噪声数据,数据中的信息已经充分的提取出来了
结果如下:
> 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
模型拟合后,对残差进行了白噪声检验,可发现P-value=0.7431>0.05,故残差是白噪声,即可说明,模型拟合良好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。