时间序列分析基于R答案Word格式.docx
《时间序列分析基于R答案Word格式.docx》由会员分享,可在线阅读,更多相关《时间序列分析基于R答案Word格式.docx(39页珍藏版)》请在冰豆网上搜索。
习题2.2数据.txt'
sep='
\t'
header=F)
data=ts(as.vector(t(as.matrix(volcano.co2))),start=c(1975,1))
plot(data)
as.vector(acf(data,lag.max=23)$acf)
#序列自相关系数长期位于零轴的一边。
这是
#具有单调趋势序列的典型特征,同时自相关
#图呈现出明显的正弦波动规律,这是具有周
#期变化规律的非平稳序列的典型特征。
自相
#关图显示出来的这两个性质和该序列时序图
#显示出的带长期递增趋势的周期性质是非常
#吻合的。
#2.5习题-3
rain=read.table('
习题2.3数据.txt'
data=ts(as.vector(t(as.matrix(rain))),start=c(1945,1))
#该序列为平稳序列
as.vector(acf(data,lag.max=23)$acf)
#该序列的自相关系数一直都比较小,
#基本控制在2倍的标准差范闹以内,
#可以认为该序列自始至终都在零轴附
#近波动,这是随机性非常强的平稳时
#间序列通常具有的自相关图特征。
for(iin1:
2){
print(Box.test(data,lag=6*i))
}
#根据这个检验结果,不能拒绝序列纯
#随机的原假设。
因而可以认为此序列
#的变动属于纯随机波动。
#2.5习题-4
data=c(0.02,0.05,0.10,-0.02,0.05,0.01,0.12,-0.06,0.08,-0.05,0.02,-0.05)
Q=100*data%*%data
LB=100*102*(data/c(99:
88))%*%data
1-pchisq(Q,12)
1-pchisq(LB,12)
#认为该序列为纯随机序列
#2.5习题-5
sale.data=read.table('
习题2.5数据.txt'
sale.data=sale.data[-1,]
sale.data=sale.data[,-1]
data=ts(as.numeric(as.vector(as.matrix(sale.data)),start=c(2000,1)))
#该序列不是平稳序列
acf(data)
#纯随机性检验结果显示,在各阶延迟
#下LB检验统计量的P值都非常小(<
0.05),
#所以我们可以以很大的把握断定该序
#列属于非白噪声序列。
#2.5习题-6
par(mfrow=c(2,2))
习题2.6数据.txt'
temp=as.vector(t(as.matrix(sale.data)))
temp=temp[1:
(length(temp)-2)]
data=ts(temp,start=c(1969,1),frequency=28)
print(Box.test(data,lag=6*i,type='
Ljung-Box'
))
#列属于非白噪声序列
data=data-c(0,data[1:
(length(data)-1)])
#该序列是平稳序列
第三章平稳时间序列分析
#3.5习题-17
snow=read.table('
习题3.17数据.txt'
x=as.vector(t(as.matrix(snow)))
x=x[1:
(length(x)-1)]
data=ts(x)
pacf(data)
library(forecast)
library(zoo)
auto.arima(data)
#ARIMA(0,1,1)
data.fit=arima(data,order=c(0,1,1))
data.fit
data.fore=forecast(data.fit,h=5)
data.fore
plot(data.fore)
#3.5习题-18
rice=read.table('
习题3.18数据.txt'
x=as.vector(t(as.matrix(rice)))
(length(x)-3)]
#3.5习题-19
re=read.table('
习题3.19数据.txt'
x=as.vector(t(as.matrix(re)))
(length(x)-6)]
#ARIMA(0,0,2)
data.fit=arima(data,order=c(0,0,2))
data.fore=forecast(data.fit,h=1)
#3.5习题-20
p=read.table('
习题3.20数据.txt'
x=as.vector(t(as.matrix(p)))
(length(x)-2)]
#ARIMA(2,1,3)
data.fit=arima(data,order=c(2,1,3))
第四章非平稳序列的确定性分析
#4.6习题-5
习题4.5数据.txt'
(length(x)-4)]
#线性拟合
t=c(1:
length(x))
data.fit=lm(data~t)
summary(data.fit)
abline(lm(data~t),col=2)
#5期移动平均法
library(TTR)
data.ma=SMA(x,n=5)
lines(data.ma,col=3,lwd=2)
p1=sum(data[(length(data)-4):
length(data)])/5
p2=(sum(data[(length(data)-3):
length(data)])+p1)/5
p3=(sum(data[(length(data)-2):
length(data)])+p1+p2)/5
p4=(sum(data[(length(data)-1):
length(data)])+p1+p2+p3)/5
p5=(data[length(data)]+p1+p2+p3+p4)/5
print(c(p1,p2,p3,p4,p5))
#Holt两参数平滑
data.fit2=HoltWinters(data,gamma=F)
data.fit2
plot(data.fit2)
data.f=forecast(data.fit2,h=5)
data.f
plot(data.f)
#4.6习题-6
习题4.6数据.txt'
data=ts(x,start=1948)
#二次拟合
#lm
t1=c(1:
t2=t1^2
data.fit1=lm(data~t1+t2)
summary(data.fit1)
#nls
data.fit2=nls(x~a+b*t1+c*t1^2,start=list(a=1,b=1,c=1))
summary(data.fit2)
y=predict(data.fit2)
y=ts(y,start=1948)
plot(data,type='
p'
)
lines(y,col=2,lwd=2)
#4.6习题-7
习题4.7数据.txt'
data=ts(x,start=c(1962,1),frequency=12)
#该时序图具有季节效应
#因素分解
data.fit=decompose(data,type='
mult'
plot(data.fit)
#Holt-winters三参数指数平滑
data.fit2=HoltWinters(data)
data.f=forecast(data.fit2,h=12)
#4.6习题-8
习题4.8数据.txt'
data=x[1:
data=ts(data,start=c(1980,1),frequency=12)
#该时序图具有季节效应和趋势起伏变动
#12期移动平均法预测
data.p=data
for(iinc(1:
24)){
p=sum(data.p[(length(data.p)-11):
length(data.p)])/12
data.p=c(data.p,p)
data.p[(length(data.p)-23):
length(data.p)]
第五章非平稳序列的随机分析
#5.7习题-1
习题5.1数据.txt'
x=ts(x)
plot(x)
#蕴含显著线性趋势
#一阶差分
x.dif=diff(x)
plot(x.dif)
acf(x.dif)
#0阶截尾
pacf(x.dif)
#拖尾
#ARIMA(0,1,0)
auto.arima(x)
x.fit=arima(x,order=c(0,1,1))
x.fit
print(Box.test(x.fit$residual,lag=6*i))
x.f=forecast(x.fit,h=1)
x.f
plot(x.f)
#5.7习题-2
习题5.2数据.txt'
header=T)
x=as.matrix(p)
x=c(x[,2],x[,4],x[,6])
x=ts(x,start=1949)
#蕴含曲线趋势
#二阶差分
x.dif2=diff(x.dif)
plot(x.dif2)
acf(x.dif2)
pacf(x.dif2)
#3阶截尾
#ARIMA(3,2,0)
#ARIMA(0,2,2)
x.fit=arima(x,order=c(3,2,0))
x.f=forecast(x.fit,h=5)
#5.7习题-3
习题5.3数据.txt'
x=as.numeric(c(x[,2],x[,4],x[,6]))
x=ts(x,start=1973,frequency=12)
#蕴含固定周期趋势
#一阶差分+12步差分
x.dif2=diff(diff(x),12)
#判断不出来
#ARIMA(0,1,1)(0,1,1)[12]
x.fit=arima(x,order=c(0,1,1),seasonal=list(order=c(0,1,1),period=12))
#5.7习题-4
习题5.4数据.txt'
x=as.numeric(c(x[,2],x[,4],x[,6]),x[,8])
x=ts(x,start=1750)
#ARIMA(3,1,0)
#ARIMA(0,0,1)withnon-zeromean