@fanxy
2020-04-12T08:48:02.000000Z
字数 9526
阅读 8634
樊潇彦 复旦大学经济学院 金融数据
下载数据:Ch08.rar
setwd("D:\\...\\Ch08")rm(list=ls())install.packages("forecast","timeDate","timeSeries","fBasics","tseries")## 调用library(tidyverse)library(readxl)library(ggplot2)library(forecast)library(timeDate)library(timeSeries)library(fBasics)library(tseries)
随机过程(stochastic process)是随机变量按时间编排的集合。设对每个参数 , 都是一个随机变量,则称下面的随机变量族为随机过程:
根据时间参数 是否连续,可分为:
| 数字特征 | 公式 |
|---|---|
| 均值 | |
| 方差 | |
| 协方差 | |
| 自相关系数(ACF) | |
| 偏自相关系数(PACF) | :在 AR(k-1) 模型基础上添加 对解释 的贡献 |
# Tsay(2015):P33,例2.1d10=read.table("m-dec12910.txt",header=T)$dec10dec10=ts(d10,frequency=12,start=c(1967,1)) # 转换为ts对象par(mfcol=c(3,1)) # 设定绘图窗口3*1plot(dec10,xlab='year',ylab='returns')title(main='(a): Simple returns')f1=acf(d10,lag=24,plot=T) # 计算acf并作图pacf(d10, lag=24, plot=T) # 计算pacf并作图f1$acf[13] # 显示gamma_13 > 0f1$acf[13]*sqrt(length(d10)) # 检验1月效应(P33-34,例2.1),H0:gamma_13=0Box.test(d10,lag=24,type='Ljung') # Ljung-Box Q检验,H0: gamma_1=gamma_2=...=gamma_24=0# CAPM理论假定收益率不可预测、无自相关性,因此Ljung-Box Q检验可以用来检验有效市场假说。

通过积分和差分,可以实现平稳与非平稳数据之间的转换:
一、数据示例:
1 上证综指与收益率
library(quantmod)# 下载上证综指无法下载可直接 load("ssec.RData")ssec<-getSymbols("000001.SS",from = "1991-07-15",to = Sys.time(),src = "yahoo",auto.assign=FALSE)ssec.m<-to.monthly(ssec) # 转换成月度数据chartSeries(ssec.m,type="candlesticks",theme="white", name = "上证综指月线图",time.scale = "",up.col="red",dn.col="green")

2 季度GDP与名义增长率
学校电子图书馆有很多中文数据库,下面以国泰安中季度国内生产总值为例,说明宏观经济数据的特征。
library(readxl)Qgdp=read_excel("CME_Qqgdp.xlsx", skip=3, col_names =F)colnames(Qgdp)=colnames(read_excel("CME_Qqgdp.xlsx")) # 更改指标名str(Qgdp) # 查看数据结构library(zoo)Qgdp=Qgdp%>%mutate(time=as.yearmon(Quarter))%>%rename('国内生产总值(亿元)'=Gdp,'国内生产总值(比上年同期增长)(%)'=Gdpcurrperiod)%>%select(time,'国内生产总值(亿元)','国内生产总值(比上年同期增长)(%)')ggplot(Qgdp%>%gather(var,value,-time),aes(time,value))+geom_line()+facet_wrap(~var,scales="free")+labs(title="中国国内生产总值(季)",x="",y="")+theme_bw()

二、平稳性检验:
ssec.m97=ssec.m[index(ssec.m)>as.yearmon("1997-01"),] # 1996年12月16日开始有10%涨跌幅度限制ln_ssec=log(ssec.m97$ssec.Adjusted)plot(ln_ssec, main="上证综指对数值")# 计算月收益率,由于月收益率可能较大,不用diff(log(x))ssec.m97$ret=diff(ssec.m97$ssec.Adjusted) / lag(ssec.m97$ssec.Adjusted) * 100ret=ssec.m97$ret[-1,] # 去掉第一行缺失值plot(ret, main="上证综指月收益率(%)")library(tseries)pp.test(ln_ssec) # DF检验,H0:非平稳pp.test(ret)adf.test(ln_ssec) # ADF检验,H0:非平稳adf.test(ret)kpss.test(ln_ssec) # KPSS检验,H0:平稳kpss.test(ret)
| 常用统计量 | 以 AR(1) 过程为例 |
|---|---|
| 均值 | |
| 方差 | |
| 自相关系数(ACF) | |
| 偏自相关系数(PACF) |
2. 平稳性条件:
| 常用统计量 | 以 MA(1) 过程为例 |
|---|---|
| 均值 | |
| 方差 | |
| 自相关系数(ACF) | |
| 偏自相关系数(PACF) |
2. 平稳性条件:
移动平均过程总是平稳的。当 时, 过程可逆,即可以转换为 过程:
| 常用统计量 | 以 ARMA(1,1) 过程为例 |
|---|---|
| 均值 | |
| 方差 | |
| 自相关系数(ACF) | |
| 偏自相关系数(PACF) |
2. 平稳性条件:
与 AR(p) 模型类似,ARMA(p,q) 模型的平稳性要求矩阵 的所有特征根的模均小于1。
模型回归的第一步是在 AR、MA 和 ARMA模型中做出选择,做 ACF 和 PACF 图将很有帮助。
| - | AR(p) | MA(q) | ARMA(p,q) |
|---|---|---|---|
| ACF | 衰减 | 阶截尾 | 衰减 |
| PACF | 阶截尾 | 衰减 | 衰减 |
实际应用中,forcast 包中的 auto.arima() 命令,可以自动识别 ARIMA(p,d,q) 中各个阶数,非常方便。
library(fBasics)basicStats(ret) # 对月度收益率的基本统计描述t.test(ret) # 均值检验 H0: x=0normalTest(ret,method='jb',na.rm=T) # 正态分布检验,JB-testpar(mfcol=c(1,1))acf(ret, lag=12, plot=T) # 自相关系数作图Box.test(ret,lag=6,type='Ljung') # m阶自相关系数为零的检验library(forecast)regssecm=auto.arima(ret,stationary = TRUE, seasonal = FALSE,ic="aic")regssecm # 回归结果:ARIMA(2,0,1)# 拟合与预测par(mfcol=c(2,1)) # 设作图窗口2行1例plot(regssecm$x, lty = 1, main = "上证综指收益率(%)")lines(fitted(regssecm), lty = 2,lwd = 2, col = "red")predict(regssecm, n.ahead=3)plot(forecast(regssecm))

# Tsay(2015):P41,例2.3G=read.table("q-gnp4710.txt",header=T)$VALUE # 读取GNP数据gnp=diff(log(G)) # 增长率pp.test(gnp) # DF检验,H0:有单位根adf.test(gnp) # ADF检验,H0:有单位根tdx=c(1:253)/4+1947 # 时间指标par(mfcol=c(2,1)) # 设定作图窗口plot(tdx,G,xlab='year',ylab='GNP',type='l') # GNPplot(tdx[2:253],gnp,type='l',xlab='year',ylab='growth') # 增长率acf(gnp,lag=12) # ACFpacf(gnp,lag=12) # PACFm1=arima(gnp,order=c(3,0,0)) # 回归AR(3)m1library(forecast)m2=auto.arima(gnp,stationary = TRUE, seasonal = FALSE,ic="aic") # 自动回归命令,结果一样m2# 模型检验,作图检验残差应满足三个标准:(1)不存在波动集聚;(2)ACF图没有自相关;(3)Ljung-Box检验所有自相关系数均为零tsdiag(m1, gof=12)# 拟合与预测par(mfcol=c(2,1))plot(m2$x,lty = 1, main = "美国GNP增长率",ylab = "Return in percent", xlab = "Date")lines(fitted(m2), lty = 2,lwd = 2, col = "red")predict(m2, n.ahead=3)plot(forecast(m2))# 周期分析phi=c(1,-m1$coef[1:3]); z=polyroot(phi) # 设定和求解多项式z # 两个共轭复数、一个小于零的实数Mod(z) # 检验:z的模>1,对应特征根的模<12*pi/acos(Re(z)/Mod(z))[1] # 计算经济周期平均持续时间