6、多元时间序列分析
多元时间序列分析
- 平稳多元序列建模
- 虚假回归
- 单位根检验
- DF检验
- ADF检验
- 协整
- 单整与协整
- 协整检验
- 误差修正检验
平稳多元序列建模
虚假回归
单位根检验
DF检验
-
DF统计量
-
等价表达
-
三种类型
- 无漂移项自回归过程
- 带漂移项自回归过程
- 带趋势回归过程
ADF检验
-
原理
-
三种类型
- 无常数均值、无趋势的p阶自回归过程
- 有常数均值、无趋势的p阶自回归过程
- 既有常数均值又有线性趋势的p阶自回归过程
协整
单整与协整
-
单整
- 概念
- 性质
-
协整
协整检验
-
假设条件
-
检验步骤
- 建立响应序列与输入序列之间的回归模型
- 对回归残差序列进行平稳性检验
误差修正检验
#6.1
#读入数据,并绘制输出序列时序图
a=read.table("E:/data/file24.csv",sep=",",header = T)
y=ts(a$output)
plot(y)#考察输出序列自相关图和偏自相关图
acf(y)
pacf(y)#对输出序列拟合模型AR(4)
y.fit=arima(y,order=c(4,0,0))
y.fit#残差白噪声检验
for(i in 1:2) print(Box.test(y.fit$residual,lag=6*i))x=ts(a$input)
ccf(y,x) #协相关图#arimax(y,order=,xreg=,xtransf=,transfer=)
#y:要进行模型拟合的序列名
#order:指定y序列拟合模型阶数。order=c(p,d,q)
#p:自回归阶数
#d:差分阶数
#q:移动平均阶数
#xreg:输入变量名(不需要做转移函数变换)
#xtransf:输入变量名(需要做转移函数变换)
#transfer:指定转移函数的模型阶数library("TSA") #TSA包用不了
y.fit=arimax(y,order=c(p,0,q),xreg=x)y.fit=arimax(y,order=c(p,0,q),xreg=data.frame(x1,x2))y.fit=arimax(y,order=c(p,0,q),xtransf=x,transfer=list(c(m,n)))y.fit=arimax(y,order=c(p,0,q),xtransf=data.frame(x1,x2),transfer=list(c(m1,n1),c(m2,n2)))y.fit=arimax(y,order=c(p,0,q),xreg=x1,xtransf=x2,transfer=list(c(m,n)))library(TSA)
y.fit2=arimax(y,order=c(4,0,0),xtransf=x,transfer=list(c(2,1)))
y.fit2#6.2
#拟合带漂移项的差分平稳序列,并绘制时序图和线性拟合效果图
e=rnorm(1000)
x=filter(0.1+e,filter=1,method = "recursive")
plot(x)
t=c(1:1000)
abline(lm(x~t),col=2)
lm(x~t)#差分运算和线性拟合后残差序列比较
r1=diff(x)
x.fit=lm(x~t)
r2=ts(x.fit$residual)
c1=min(r1,r2)
c2=max(r1,r2)
plot(r1,ylim=c(c1,c2))
lines(r2,col=2)#拟合趋势平稳序列,并绘制时序图
t=c(1:1000)
e=rnorm(1000,0,10)
x=0.1*t+e
x=ts(x)
plot(x)#考察差分后残差序列的波动程度
plot(diff(x))
abline(h=c(1.98*sd(diff(x)),-1.98*sd(diff(x))),col=2)#考察线性拟合后残差序列的波动程度
x.fit=lm(x~t)
r=ts(x.fit$residual)
plot(r)
abline(h=c(1.98*sd(r),-1.98*sd(r)),col=2)#adfTest(x,lags=,type=)
#x:进行单位根检验的序列名
#lags:延迟阶数
#(1)lags=1,默认设置,这时进行DF检验
#(2)lags=n,n>1,这时进行ADF检验
#type:检验类型
#(1)type="nc",无常数均值,无趋势类型
#(2)type="c",有常数均值,无趋势类型
#(3)type="ct",有常数均值,又有趋势类型#6.4
#读入数据,并绘制两序列时序图
b=read.table("E:/data/file25.csv",sep=",",header=T)
x=ts(b$lnx,start=1978)
y=ts(b$lny,start=1978)
c1=min(x,y)
c2=max(x,y)
plot(x,ylim=c(c1,c2))
lines(y,lty=2,col=2)#对人均纯收入对数序列进行DF检验
library(fBasics)
library(fUnitRoots)
adfTest(x,lag=1,type="nc")adfTest(x,lag=1,type="c")adfTest(x,lag=1,type="ct")#对人均生活消费支出对数序列进行DF检验
adfTest(y,lag=1,type="nc")
adfTest(y,lag=1,type="c")
adfTest(y,lag=1,type="ct")#6.4续
#差分运算
dx=diff(x)
dy=diff(y)#人均收入对数差分后序列ADF检验
for(i in 1:3) print(adfTest(dx,lag=i,type="nc"))for(i in 1:3) print(adfTest(dx,lag=i,type="c"))#人均支出对数差分后序列ADF检验
for(i in 1:3) print(adfTest(dy,lag=i,type="nc"))for(i in 1:3) print(adfTest(dy,lag=i,type="c"))#6.4续
#第一步:构造回归模型
y.fit=lm(y~x)
summary(y.fit)#第二步:残差序列单位根检验
r=ts(y.fit$residual)
for(i in 1:3) print(adfTest(r,lag=i,type="nc"))#6.4续
ECM=y.fit$residual[1:24]
dify.fit=lm(diff(y)~0+diff(x)+ECM)
summary(dify.fit)
6、多元时间序列分析
多元时间序列分析
- 平稳多元序列建模
- 虚假回归
- 单位根检验
- DF检验
- ADF检验
- 协整
- 单整与协整
- 协整检验
- 误差修正检验
平稳多元序列建模
虚假回归
单位根检验
DF检验
-
DF统计量
-
等价表达
-
三种类型
- 无漂移项自回归过程
- 带漂移项自回归过程
- 带趋势回归过程
ADF检验
-
原理
-
三种类型
- 无常数均值、无趋势的p阶自回归过程
- 有常数均值、无趋势的p阶自回归过程
- 既有常数均值又有线性趋势的p阶自回归过程
协整
单整与协整
-
单整
- 概念
- 性质
-
协整
协整检验
-
假设条件
-
检验步骤
- 建立响应序列与输入序列之间的回归模型
- 对回归残差序列进行平稳性检验
误差修正检验
#6.1
#读入数据,并绘制输出序列时序图
a=read.table("E:/data/file24.csv",sep=",",header = T)
y=ts(a$output)
plot(y)#考察输出序列自相关图和偏自相关图
acf(y)
pacf(y)#对输出序列拟合模型AR(4)
y.fit=arima(y,order=c(4,0,0))
y.fit#残差白噪声检验
for(i in 1:2) print(Box.test(y.fit$residual,lag=6*i))x=ts(a$input)
ccf(y,x) #协相关图#arimax(y,order=,xreg=,xtransf=,transfer=)
#y:要进行模型拟合的序列名
#order:指定y序列拟合模型阶数。order=c(p,d,q)
#p:自回归阶数
#d:差分阶数
#q:移动平均阶数
#xreg:输入变量名(不需要做转移函数变换)
#xtransf:输入变量名(需要做转移函数变换)
#transfer:指定转移函数的模型阶数library("TSA") #TSA包用不了
y.fit=arimax(y,order=c(p,0,q),xreg=x)y.fit=arimax(y,order=c(p,0,q),xreg=data.frame(x1,x2))y.fit=arimax(y,order=c(p,0,q),xtransf=x,transfer=list(c(m,n)))y.fit=arimax(y,order=c(p,0,q),xtransf=data.frame(x1,x2),transfer=list(c(m1,n1),c(m2,n2)))y.fit=arimax(y,order=c(p,0,q),xreg=x1,xtransf=x2,transfer=list(c(m,n)))library(TSA)
y.fit2=arimax(y,order=c(4,0,0),xtransf=x,transfer=list(c(2,1)))
y.fit2#6.2
#拟合带漂移项的差分平稳序列,并绘制时序图和线性拟合效果图
e=rnorm(1000)
x=filter(0.1+e,filter=1,method = "recursive")
plot(x)
t=c(1:1000)
abline(lm(x~t),col=2)
lm(x~t)#差分运算和线性拟合后残差序列比较
r1=diff(x)
x.fit=lm(x~t)
r2=ts(x.fit$residual)
c1=min(r1,r2)
c2=max(r1,r2)
plot(r1,ylim=c(c1,c2))
lines(r2,col=2)#拟合趋势平稳序列,并绘制时序图
t=c(1:1000)
e=rnorm(1000,0,10)
x=0.1*t+e
x=ts(x)
plot(x)#考察差分后残差序列的波动程度
plot(diff(x))
abline(h=c(1.98*sd(diff(x)),-1.98*sd(diff(x))),col=2)#考察线性拟合后残差序列的波动程度
x.fit=lm(x~t)
r=ts(x.fit$residual)
plot(r)
abline(h=c(1.98*sd(r),-1.98*sd(r)),col=2)#adfTest(x,lags=,type=)
#x:进行单位根检验的序列名
#lags:延迟阶数
#(1)lags=1,默认设置,这时进行DF检验
#(2)lags=n,n>1,这时进行ADF检验
#type:检验类型
#(1)type="nc",无常数均值,无趋势类型
#(2)type="c",有常数均值,无趋势类型
#(3)type="ct",有常数均值,又有趋势类型#6.4
#读入数据,并绘制两序列时序图
b=read.table("E:/data/file25.csv",sep=",",header=T)
x=ts(b$lnx,start=1978)
y=ts(b$lny,start=1978)
c1=min(x,y)
c2=max(x,y)
plot(x,ylim=c(c1,c2))
lines(y,lty=2,col=2)#对人均纯收入对数序列进行DF检验
library(fBasics)
library(fUnitRoots)
adfTest(x,lag=1,type="nc")adfTest(x,lag=1,type="c")adfTest(x,lag=1,type="ct")#对人均生活消费支出对数序列进行DF检验
adfTest(y,lag=1,type="nc")
adfTest(y,lag=1,type="c")
adfTest(y,lag=1,type="ct")#6.4续
#差分运算
dx=diff(x)
dy=diff(y)#人均收入对数差分后序列ADF检验
for(i in 1:3) print(adfTest(dx,lag=i,type="nc"))for(i in 1:3) print(adfTest(dx,lag=i,type="c"))#人均支出对数差分后序列ADF检验
for(i in 1:3) print(adfTest(dy,lag=i,type="nc"))for(i in 1:3) print(adfTest(dy,lag=i,type="c"))#6.4续
#第一步:构造回归模型
y.fit=lm(y~x)
summary(y.fit)#第二步:残差序列单位根检验
r=ts(y.fit$residual)
for(i in 1:3) print(adfTest(r,lag=i,type="nc"))#6.4续
ECM=y.fit$residual[1:24]
dify.fit=lm(diff(y)~0+diff(x)+ECM)
summary(dify.fit)