1.考虑从1948年1月到2011年11月美国失业率的月数据(见文件m-unrate-4811.txt),数据来目美国圣路易斯的联邦储备银行.
(a)该除非特别声明,在以下习题中都用5%的显著性水平来得出结论.失业率的月数据是否存在单位根?为什么?
(b)根据该数据建立一个时间序列模型并检验模型是否已充分拟合数据.然后,根据所建立的模型对美国2011年12月和2012年前3个月的失业率进行预测.(注意:适合该数据的模型不止一个,只要模型充分即可.)
(c)拟合的模型是否存在商业周期?为什么?
除非特别声明,在以下习题中都用5%的显著性水平来得出结论.
da=read.table("m-unrate-4811.txt",header=T)
head(da)
#z做时序图和美国月度失业率的ACF
rate=da$rate
rate=ts(rate,frequency=12,start=c(1948,1))
par(mfcol=c(2,1))
plot(rate,xlab='year',ylab='tate')
title(main='美国失业率')
acf(rate,lag=24) # command to obtain sample ACF of the data
观察失业率的月度时间序列图发现:
1.失业率有周期性变化,但周期不固定;
2.失业率水平在数据的时间范围内可能有增长趋势;
3.失业率上升快,下降慢。这预示着失业率序列不服从线性时间序列。 这里先不使用非线性时间序列。
(a)美国月度失业率的ACF图,这像是单位根非平稳。
# 计算其差分序列,作ACF图
drate=diff(rate)
acf(drate,lag=24)
这不太像是低阶的MA, 在周期12的倍数有较高相关, 怀疑是季节调整的残余周期性。
#做差分序列的PACF图
pacf(drate,lag=24)
这也不像是低阶的AR,而且在周期12的整倍数的偏自相关也超出。
#对差分序列用AIC定阶建立AR模型:
ar(drate, method="mle")
Call: ar(x = drate, method = "mle") Coefficients: 1 2 3 4 5 6 7 8 0.0211 0.2151 0.1544 0.0939 0.1223 -0.0069 -0.0230 0.0157 9 10 11 12 0.0028 -0.1030 0.0292 -0.1268 Order selected 12 sigma^2 estimated as 0.03824
#作单位根检验:
install.packages("fUnitRoots")
library(fUnitRoots)
fUnitRoots::adfTest(drate, lags=12, type="ct")
Title: Augmented Dickey-Fuller Test Test Results: PARAMETER: Lag Order: 12 STATISTIC: Dickey-Fuller: -8.2453 P VALUE: 0.01
(a)检验结果不显著,说明有单位根。
总结以上所见:
失业率序列很可能是单位根过程;
尽管已经进行了季节调整, 差分序列的ACF和PACF在滞后为12倍数的地方还是较高, 说明序列仍残余12个月周期的影响, 可能还需要在模型中考虑增加季节项;
差分序列的ACF和PACF在滞后为12倍数处数值约0.15, 但是衰减很慢, 这有些像是长记忆过程, 当ARMA方程两边有相近特征根时可表现出类似长记忆性质;
除了季节性外,差分序列的ACF和PACF在5阶或6阶显著, PACF指数震荡衰减;
可尝试p=1和q=5。 取q=5是考虑到PACF的震荡衰减以及ACF在前5阶较高。 取p=1是因为ACF也是指数衰减而不是快速截尾。
因此尝试如下的带有季节性的 ARIMA(1,1,5)(1,0,1)12模型:
resm <- arima(
drate, order=c(1,1,5),
seasonal=list(order=c(1,0,1), period=12)
)
resm
Call: arima(x = drate, order = c(1, 1, 5), seasonal = list(order = c(1, 0, 1), period = 12)) Coefficients: ar1 ma1 ma2 ma3 ma4 ma5 sar1 sma1 0.7979 -1.8108 1.0274 -0.2240 0.0713 -0.0638 0.5442 -0.8062 s.e. 0.0504 0.0600 0.0905 0.0913 0.0837 0.0427 0.0718 0.0534 sigma^2 estimated as 0.03651: log likelihood = 175.66, aic = -333.32
#删去不显著的MA3和MA4系数:
mod1 <- arima(
drate, order=c(1,1,5),
seasonal=list(order=c(1,0,1), period=12),
fixed=c(NA, NA, NA, 0, 0, NA, NA, NA)
)
mod1
Call: arima(x = drate, order = c(1, 1, 5), seasonal = list(order = c(1, 0, 1), period = 12), fixed = c(NA, NA, NA, 0, 0, NA, NA, NA)) Coefficients: ar1 ma1 ma2 ma3 ma4 ma5 sar1 sma1 0.7684 -1.730 0.8107 0 0 -0.0806 0.5348 -0.8029 s.e. 0.0543 0.055 0.0532 0 0 0.0132 0.0728 0.0550 sigma^2 estimated as 0.03697: log likelihood = 170.9, aic = -327.8
#作模型残差检验:
tsdiag(mod1, gof=36)
(b)结果表明模型充分&