R实现有季节效应的时间序列分析

数据与学习过程来源于:《时间序列分析-基于R》(第二版)【M】王燕 中国人民大学出版社

代码位于文章最后

数据为1948-1981年美国女性(20岁以上)月度失业率序列

一、概念

  时间序列,简单来说就说一系列与时间有关系的序列。它按照一定时间间隔收集,在统计研究中,常用按时间顺序排列的一组随机变量X1,X2...Xt来表示一个随机事件的时间序列,用x1,x2,...,xt表示该随机序列的n个有序观察值,也称时间序列Xt的一个实现。我们进行时间序列分析的主要目的是为了揭示时间序列的性质,要实现这个目的,只能通过分析它的观察值的性质,并以此来推断序列性质。分析的步骤可如下图所示

二、 时序图

 如图所示,可知该序列为一个具有季节效应的非平稳序列。下面使用一阶差分消去趋势,再使用12步长消去季节效应的影响

三、差分运算

四、ADF检验

 如图所示,在三类型中。type1、2的ADF的p值小于显著性0.05,可以认为通过了单根检测。下面进行纯随机数检验,如果序列为白噪音,则认为该观察序列为随机数序列,没有继续分析下去的必要

五、纯随机性检验

 每隔六阶进行检验,可以看到在六阶和十二阶里面,LB的p值显著小于显著性0.05.可以拒绝原假设,即该观察序列为平稳性的非白噪音序列 

六、拟合季节乘法模型

七、模型显著性分析

 残差分析

 残差应当服从正态分布且为0,p值大于显著性值0.05,接受原假设及残差为0。在考虑漂移项影响的前提下,对未来36个月的情况做预测

八、预测

 R代码:

library(tseries)
library(readxl)
data=read_xlsx("C:/Users/tb/Desktop/美国女性失业率.xlsx")
data_ts<-ts(data,start = c(1948,1),frequency = 12)
class(data_ts)
head(data_ts,n=10)
plot.ts(data_ts,ylab="失业人数",xlab="年份",type='b',pch=1,lwd='3',col='3')
par(mfrow=c(1,2))
acf(data_ts,plot = T)
acf(data_ts)$acf
data_diff<-diff(data_ts,lag = 12,differences = 1)
plot.ts(data_diff,ylab='失业人数',xlab='年份',type='b',pch=1,lwd='3',col='2')
par(mfrow=c(1,2))
acf(data_diff,plot = T)
acf(data_diff)$acf
library(aTSA)
adf.test(data_diff,nlag = 4)
for (k in 1:2) print(Box.test(data_diff,lag = 6*k,type = "Ljung-Box"))
acf(data_diff,lag=36)
pacf(data_diff,lag=36)
library(forecast)
model<-auto.arima(data_diff)
model
data_fit<-arima(data_diff,order = c(1,1,1),seasonal=list(order=c(0,1,1),period=12))
data_fit
ts.diag(data_fit)
accuracy(data_fit)
Box.test(data_fit$residuals,type='Ljung-Box')
fore<-forecast(data_fit,h=36)
fore
plot(fore,lty=2)
lines(fore$fitted,col=4)

  • 2
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值