时间序列作业

第三次上机实验:模型定阶与参数估计

作业内容参见:http://wenku.baidu.com/view/c128c60702020740be1e9b14.html


参考解答:

# 3、根据之前上机实验课的知识模拟产生下列时间序列的10000个观测数据,其中,构成白噪声序列的随机变量服从标准正态分布
set.seed(100)
ar1.sim<-arima.sim(list(order=c(1,0,0), ar=-0.65), n=10000, rand.gen=rnorm)
ar2.sim<-arima.sim(list(order=c(2,0,0), ar=c(0.5,0.3)), n=10000, rand.gen=rnorm)
ma3.sim<-arima.sim(list(order=c(0,0,1), ma=-0.5), n=10000, rand.gen=rnorm)
ma4.sim<-arima.sim(list(order=c(0,0,2), ma=c(-0.65,-0.24)), n=10000, rand.gen=rnorm)
arma5.sim<-arima.sim(list(order=c(1,0,1), ar=0.8,ma=-0.4), n=10000, rand.gen=rnorm)
#3、	序列(1)的真实阶数为1,分别用AR(1)模型和AR(2)模型对观测数据进行拟合(当然,之前我们应该首先观察数据图形粗略判断平稳性,观察数据的样本ACF及样本PACF对模型形式有初步判断。由于此处我们已知该时间序列数据的生成模型,因此将这一步骤省略,但是实际分析问题时是不可省的),观察其AIC值。即输入下列语句:
x<-ar1.sim
#平稳性检验
par(mfrow=c(2,1))
acf(x)
pacf(x)#see picture1
library(tseries)
adf.test(x)#p-value = 0.01,stationary 
#数据拟合
result1<-arima(x,order=c(1,0,0))
result2<-arima(x,order=c(2,0,0))
result11<-arima(x,order=c(1,0,0),include.mean=F)
result21<-arima(x,order=c(2,0,0),include.mean=F) 
#4、	记录上述两个模型的AIC值,确定拟合模型的阶数并与模型实际阶数相比较。
AIC(result1)#28286.07
AIC(result2)#28285.69
AIC(result11)#28284.25
AIC(result21)#28283.88
#单从aic的值来判断,第一个模型用ar(2)模拟似乎更好,这一点与模型并不符合,包括与pacf图像的观察结果来看也不符合。但是两个模型的aic的值差异并不大。所以单从aic来定阶也未必那么科学。我们不妨来看看ar(2)模型是否存在过拟合
r<-result1$residuals
plot(r,type='o')
abline(h=0)
r2<-result2$residuals
plot(r2,type='o')
abline(h=0)#because of so many facts we get ,the picture is not clear enough to judge wheter the residuals are independent or not. 
Box.test(result1$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.3087
Box.test(result2$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.9601
#Judging from the p-value ,ar(1),ar(2)are both accepted.so we should choose ar(1) instead of ar(2) which regards as the fitted model just judging from aic
#5、	考察不同估计方法得到的参数估计结果,即输入如下语句:
arima(x,order=c(1,0,0),method="ML")
#Coefficients:
#          ar1  intercept
#      -0.6565     0.0026
#s.e.   0.0075     0.0060
#sigma^2 estimated as 0.9901

arima(x,order=c(1,0,0),method="CSS")
#Coefficients:
#          ar1  intercept
#      -0.6566     0.0026
#s.e.   0.0075     0.0060
#sigma^2 estimated as 0.9902

arima(x,order=c(2,0,0),method="ML")
#Coefficients:
#          ar1      ar2  intercept
#      -0.6666  -0.0154     0.0026
#s.e.   0.0100   0.0100     0.0059
#sigma^2 estimated as 0.9899
arima(x,order=c(2,0,0),method="CSS")
#Coefficients:
#          ar1      ar2  intercept
#      -0.6667  -0.0154     0.0026
#s.e.   0.0100   0.0100     0.0059
#sigma^2 estimated as 0.9901

#6、	将估计结果记录下来,可以发现三种方法的估计值很接近,均相当接近于理论真值。(这是大样本,因而估计效果较好。)
arima(x,order=c(1,0,0),method="ML")
#Coefficients:
#          ar1  intercept
#      -0.6565     0.0026
#s.e.   0.0075     0.0060
#sigma^2 estimated as 0.9901

arima(x,order=c(1,0,0),method="CSS")
#Coefficients:
#          ar1  intercept
#      -0.6566     0.0026
#s.e.   0.0075     0.0060
#sigma^2 estimated as 0.9902

arima(x,order=c(2,0,0),method="ML")
#Coefficients:
#          ar1      ar2  intercept
#      -0.6666  -0.0154     0.0026
#s.e.   0.0100   0.0100     0.0059
#sigma^2 estimated as 0.9899
arima(x,order=c(2,0,0),method="CSS")
#Coefficients:
#          ar1      ar2  intercept
#      -0.6667  -0.0154     0.0026
#s.e.   0.0100   0.0100     0.0059
#sigma^2 estimated as 0.9901


#7、	对序列(2),分别用AR(1)模型、AR(2)模型和AR(3)模型对观测数据进行拟合,利用AIC值确定拟合模型的阶数并与模型实际阶数相比较。
x<-ar2.sim
#平稳性检验
par(mfrow=c(2,1))
acf(x)
pacf(x)
library(tseries)
adf.test(x)# p-value = 0.01,  stationary
#数据拟合
result1<-arima(x,order=c(1,0,0))
result2<-arima(x,order=c(2,0,0))
result3<-arima(x,order=c(3,0,0))
result11<-arima(x,order=c(1,0,0),include.mean=F)
result21<-arima(x,order=c(2,0,0),include.mean=F) 
result31<-arima(x,order=c(2,0,0),include.mean=F) 
#记录上述两个模型的AIC值,确定拟合模型的阶数并与模型实际阶数相比较。
AIC(result1)#29244.69
AIC(result2)#28386.86
AIC(result3)#28388.54
AIC(result11)#29245.83
AIC(result21)#28386.59
AIC(result31)#28386.59
#定阶为ar(2),与实际相符
#对残差进行自相关检验
par(mfrow=c(3,1))
r<-result1$residuals
plot(r,type='o')
abline(h=0)
r<-result2$residuals
plot(r,type='o')
abline(h=0)
r2<-result3$residuals
plot(r2,type='o')
abline(h=0)
Box.test(result1$residuals, lag = 1, type = "Ljung-Box")# p-value < 2.2e-16
Box.test(result2$residuals, lag = 1, type = "Ljung-Box")# p-value = 0.8726
Box.test(result3$residuals, lag = 1, type = "Ljung-Box")# p-value = 0.9954
#ar(2)被接受
#  考察不同估计方法得到的参数估计结果,即输入如下语句:
arima(x,order=c(1,0,0),method="ML")
#Coefficients:
#         ar1  intercept
#      0.7129    -0.0645
#s.e.  0.0070     0.0363
#sigma^2 estimated as 1.09

arima(x,order=c(1,0,0),method="CSS")
#Coefficients:
#         ar1  intercept
#      0.7129    -0.0645
#s.e.  0.0070     0.0364
#sigma^2 estimated as 1.09

arima(x,order=c(2,0,0),method="ML")
#Coefficients:
#         ar1     ar2  intercept
#      0.5082  0.2870    -0.0644
#s.e.  0.0096  0.0096     0.0488
#sigma^2 estimated as 0.9999

arima(x,order=c(2,0,0),method="CSS")
#Coefficients:
#         ar1     ar2  intercept
#      0.5082  0.2871    -0.0656
#s.e.  0.0096  0.0096     0.0489
#sigma^2 estimated as 1

arima(x,order=c(3,0,0),method="ML")
#Coefficients:
#         ar1     ar2     ar3  intercept
#      0.5066  0.2842  0.0056    -0.0644
#s.e.  0.0100  0.0108  0.0100     0.0491
#sigma^2 estimated as 0.9999

arima(x,order=c(3,0,0),method="CSS")
#Coefficients:
#         ar1     ar2     ar3  intercept
#      0.5066  0.2842  0.0056    -0.0654
#s.e.  0.0100  0.0108  0.0100     0.0491
#sigma^2 estimated as 1
#8、	同样对序列(3)、(4)、(5)进行如上操作,分别取拟合模型为MA(1)、MA(2),MA(1)、MA(2)、MA(3)及ARMA(1,1)、ARMA(2,1),ARMA(1,2)。将结果记录下来。
#######################对模型3###########################
x<-ma3.sim
#平稳性检验(略)
#数据拟合
result1<-arima(x,order=c(0,0,1))
result2<-arima(x,order=c(0,0,2))
result11<-arima(x,order=c(0,0,1),include.mean=F)
result21<-arima(x,order=c(0,0,2),include.mean=F) 
#记录上述两个模型的AIC值,确定拟合模型的阶数并与模型实际阶数相比较。
AIC(result1)#28533.94
AIC(result2)#28534.67
AIC(result11)#28531.99
AIC(result21)#28532.72
#定阶为ma(2),与实际不相符
#对残差进行自相关检验
Box.test(result1$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.5871
Box.test(result2$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.985
#ma(1)被接受,且aic的值相差不大,故选择ma(1)是合理的
#  考察不同估计方法得到的参数估计结果,即输入如下语句:
arima(x,order=c(0,0,1),method="ML")
#Coefficients:
#          ma1  intercept
#      -0.4851    -0.0012
#s.e.   0.0088     0.0052
#sigma^2 estimated as 1.015

arima(x,order=c(0,0,1),method="CSS")
#Coefficients:
#          ma1  intercept
#      -0.4851    -0.0012
#s.e.   0.0088     0.0052
#sigma^2 estimated as 1.015

arima(x,order=c(0,0,2),method="ML")
#Coefficients:
#          ma1      ma2  intercept
#      -0.4793  -0.0113    -0.0012
#s.e.   0.0101   0.0100     0.0051
#sigma^2 estimated as 1.015

arima(x,order=c(0,0,2),method="CSS")
#Coefficients:
#          ma1      ma2  intercept
#      -0.4794  -0.0113    -0.0012
#s.e.   0.0101   0.0100     0.0051
#sigma^2 estimated as 1.015

#######################对模型4###########################
x<-ma4.sim
#平稳性检验(略)
#数据拟合
result1<-arima(x,order=c(0,0,1))
result2<-arima(x,order=c(0,0,2))
result3<-arima(x,order=c(0,0,3))
result11<-arima(x,order=c(0,0,1),include.mean=F)
result21<-arima(x,order=c(0,0,2),include.mean=F) 
result31<-arima(x,order=c(0,0,3),include.mean=F) 
#记录上述两个模型的AIC值,确定拟合模型的阶数并与模型实际阶数相比较。
AIC(result1)#28808.24
AIC(result2)#28232.16
AIC(result3)#28233.69
AIC(result11)#28806.27
AIC(result21)#28230.23
AIC(result31)#28231.77
#定阶为ma(2),与实际相符
#对残差进行自相关检验
Box.test(result1$residuals, lag = 1, type = "Ljung-Box")#p-value < 2.2e-16
Box.test(result2$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.8725
Box.test(result3$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.9924
#ma(2)被接受
#  考察不同估计方法得到的参数估计结果,即输入如下语句:
arima(x,order=c(0,0,1),method="ML")
#Coefficients:
#          ma1  intercept
#      -0.8545    -0.0003
#s.e.   0.0070     0.0015
#sigma^2 estimated as 1.043:

arima(x,order=c(0,0,1),method="CSS")
#Coefficients:
#          ma1  intercept
#      -0.8547    -0.0003
#s.e.   0.0070     0.0015
#sigma^2 estimated as 1.043

arima(x,order=c(0,0,2),method="ML")
#Coefficients:
#          ma1      ma2  intercept
#      -0.6473  -0.2424    -0.0003
#s.e.   0.0096   0.0096     0.0011
#sigma^2 estimated as 0.9845

arima(x,order=c(0,0,2),method="CSS")
#Coefficients:
#          ma1      ma2  intercept
#      -0.6473  -0.2426    -0.0003
#s.e.   0.0096   0.0096     0.0011
#sigma^2 estimated as 0.9846

arima(x,order=c(0,0,3),method="ML")
#Coefficients:
#          ma1      ma2      ma3  intercept
#      -0.6456  -0.2381  -0.0070    -0.0003
#s.e.   0.0100   0.0116   0.0102     0.0011
#sigma^2 estimated as 0.9845:

arima(x,order=c(0,0,3),method="CSS")
#Coefficients:
#          ma1      ma2      ma3  intercept
#      -0.6455  -0.2381  -0.0072    -0.0003
#s.e.   0.0100   0.0116   0.0102     0.0011
#sigma^2 estimated as 0.9846
############################模型5##############################
x<-arma5.sim
#平稳性检验(略)
#数据拟合
result1<-arima(x,order=c(1,0,1))
result2<-arima(x,order=c(2,0,1))
result3<-arima(x,order=c(1,0,2))
result11<-arima(x,order=c(1,0,1),include.mean=F)
result21<-arima(x,order=c(2,0,1),include.mean=F) 
result31<-arima(x,order=c(1,0,2),include.mean=F) 
#记录上述两个模型的AIC值,确定拟合模型的阶数并与模型实际阶数相比较。
AIC(result1)#28384.23
AIC(result2)#28384.11
AIC(result3)#28384.06
AIC(result11)#28383.57
AIC(result21)#28383.4
AIC(result31)#28383.36
#定阶为arma(1,2),与实际相符
#对残差进行自相关检验
Box.test(result1$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.6296
Box.test(result2$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.9927
Box.test(result3$residuals, lag = 1, type = "Ljung-Box")#p-value = 0.9979
#arma(1,2)被接受,其实arma(1,1)也是可以被接受的。
#  考察不同估计方法得到的参数估计结果,即输入如下语句:
arima(x,order=c(1,0,1),method="ML")
#Coefficients:
#         ar1      ma1  intercept
#      0.8102  -0.3983     0.0367
#s.e.  0.0098   0.0154     0.0317
#sigma^2 estimated as 0.9997

arima(x,order=c(1,0,1),method="CSS")
#Coefficients:
#         ar1      ma1  intercept
#      0.8102  -0.3982     0.0359
#s.e.  0.0098   0.0154     0.0317
#sigma^2 estimated as 0.9997

arima(x,order=c(1,0,2),method="ML")
#Coefficients:
#         ar1      ma1      ma2  intercept
#      0.8202  -0.4033  -0.0180     0.0367
#s.e.  0.0115   0.0153   0.0122     0.0322
#sigma^2 estimated as 0.9995

arima(x,order=c(1,0,2),method="CSS")
#Coefficients:
#         ar1      ma1      ma2  intercept
#      0.8200  -0.4032  -0.0178     0.0360
#s.e.  0.0115   0.0153   0.0122     0.0322
#sigma^2 estimated as 0.9995

arima(x,order=c(2,0,1),method="ML")
#Coefficients:
#         ar1      ar2      ma1  intercept
#      0.8640  -0.0357  -0.4473     0.0367
#s.e.  0.0375   0.0244   0.0358     0.0322
#sigma^2 estimated as 0.9995

arima(x,order=c(2,0,1),method="CSS")
#Coefficients:
#         ar1      ar2      ma1  intercept
#      0.8612  -0.0340  -0.4445     0.0358
#s.e.  0.0374   0.0244   0.0358     0.0321
#sigma^2 estimated as 0.9997



#将本次上机实验的结果进行整理,得出你的结论并写出实验报告。
#1、时间序列验证AIC准则定阶的正确性;如果aic的差异大时,用aic定阶比较合理。如果差异不大,那么考虑对残差进行Box.test是比较合理的.我们不能盯住aic不放,结合acf与pacf也是个好办法
#2、利用样本自相关函数、样本偏自相关函数选择模型;
#3、用不同方法估计模型参数。对于大样本,两者的差别不大,但是用阶估计对于含有ma的模型,就十分不好。对于ma模型,相差一阶的差别也不是十分大


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值