Stata时间序列笔记.docx

上传人:b****8 文档编号:11106368 上传时间:2023-02-25 格式:DOCX 页数:157 大小:10.39MB
下载 相关 举报
Stata时间序列笔记.docx_第1页
第1页 / 共157页
Stata时间序列笔记.docx_第2页
第2页 / 共157页
Stata时间序列笔记.docx_第3页
第3页 / 共157页
Stata时间序列笔记.docx_第4页
第4页 / 共157页
Stata时间序列笔记.docx_第5页
第5页 / 共157页
点击查看更多>>
下载资源
资源描述

Stata时间序列笔记.docx

《Stata时间序列笔记.docx》由会员分享,可在线阅读,更多相关《Stata时间序列笔记.docx(157页珍藏版)》请在冰豆网上搜索。

Stata时间序列笔记.docx

Stata时间序列笔记

文档结尾是FAQ和var建模的15点注意事项

【梳理概念】

向量自回归(VAR,VectorAutoregression)常用于预测相互联系的时间序列系统以及分析随机扰动对变量系统的动态影响。

VAR模型:

VAR方法通过把系统中每一个内生变量,作为系统中所有内生变量的滞后值的函数来构造模型,从而回避了结构化模型的要求。

VAR模型对于相互联系的时间序列变量系统是有效的预测模型,同时,向量自回归模型也被频繁地用于分析不同类型的随机误差项对系统变量的动态影响。

如果变量之间不仅存在滞后影响,而不存在同期影响关系,则适合建立VAR模型,因为VAR模型实际上是把当期关系隐含到了随机扰动项之中。

协整:

Engle和Granger(1987a)指出两个或多个非平稳时间序列的线性组合可能是平稳的。

假如这样一种平稳的或的线性组合存在,这些非平稳(有单位根)时间序列之间被认为是具有协整关系的。

这种平稳的线性组合被称为协整方程且可被解释为变量之间的长期均衡关系。

*第六讲时间序列分析

*----目录-----

*

*--简介

*6.1时间序列数据的处理

*--平稳时间序列模型

*6.2ARIMA模型

*6.3VAR模型

*--非平稳时间序列模型——近些年得到重视,发展很快

*6.4非平稳时间序列简介

*6.5单位根检验——检验非平稳

*6.6协整分析——非平稳序列的分析

*--自回归条件异方差模型

*6.7GARCH模型——金融序列不同时点上序列的差异

反映动态关系的时间数据顺序不可颠倒

cdd:

\stata10\ado\personal\Net_Course\B6_TimeS

*=======================

*时间序列数据的处理helptime

*=======================

*声明时间序列:

tsset命令

usegnp96.dta,clear

listin1/20

genLgnp=L.gnp(此时没办法生成之后一阶的变量,因为没有设定时间变量)

tssetdate(设定date为时间变量,timeseries)

listin1/20

genLgnp=L.gnp96

滞后一期,所以会产生1个缺失值

●检查是否有断点——肉眼看不方便,用命令检查

usegnp96.dta,clear

tssetdate

tsreport,report

dropin10/10——去掉断点成连续的,才能继续进行

listin1/12

tsreport,report

tsreport,reportlist/*列出存在断点的样本信息*/

●填充缺漏值——接着上一步,看看stata如何填充缺漏值。

一般用前面的数据的平均值或预测等

Tsfill(以缺漏值的形式)

tsreport,reportlist

listin1/12

*追加样本——有时候追加样本不是为了追加新的值,而是为了预测(见应用)

usegnp96.dta,clear

tssetdate

listin-10/-1

sum

tsappend,add(5)/*追加5个观察值*/

listin-10/-1增加的样本值都是缺漏的可以手动输入

sum

*应用:

样本外预测

reggnp96L.gnp96

predictgnp_hat

listin-10/-1——接上一步这样增加的样本值的预测值就显示出来了(前提是追加了样本值)

*清除时间标识

tsset,clear——若数据的形态有所改变就清除

*---------------------

*变量的生成与处理

*---------------------

滞后L—lag前导F—forward差分D-difference

*---滞后项、超前项和差分项helptsvarlist

usegnp96.dta,clear

tssetdate

genLgnp=L.gnp96/*一阶滞后*/

genL2gnp=L2.gnp96/*二阶滞后*/

genFgnp=F.gnp96

genF2gnp=F2.gnp96

genDgnp=D.gnp96

genD2gnp=D2.gnp96

listin1/10

listin-10/-1

D,L,F可以组合生成变量gen新变量名=DL.变量名先滞后再差分

*---产生增长率变量gen变量名=D.ln(gnp96):

对数差分——得到近似的增长率

先设定时间变量tssetdate

genlngnp=ln(gnp96)

gengrowth=D.lngnp(得到近似的增长率)

上面两步的简写形式(gengrowth=D.ln(gnp96))——该简化方法在stata12中不可行

gengrowth2=(gnp96-L.gnp96)/L.gnp96——增长率的最基本定义

gendiff=growth-growth2——若对数差分和真正的增长率接近,diff约等于0

listdategnp96lngnpgrowth*diffin1/10

*---------------------

*日期的处理

*---------------------

*---日期的格式helptsfmt

*

*基本时点:

整数数值,如-3,-2,-1,0,1,2,3....

*1960年1月1日,取值为0;

*显示格式:

*-------------------------------

*定义含义默认格式

*-------------------------------

*%td日%tdDlCY

*%tw周%twCY!

ww

*%tm月%tmCY!

mn

*%tq季度%tqCY!

qq

*%th半年%thCY!

hh

*%ty年%tyCY

*-------------------------------

*使用tsset命令指定显示格式

useB6_tsset.dta,clear

tssett,daily

list

useB6_tsset.dta,clear

tssett,weekly——定义基本时点1.2.3间的间隔是日、周、年等

list

*相同的基本时点,采用不同的方式显示会有不同的效果

clear

setobs100

gent=_n

replacet=t-3

localformat"tdtwtmtqthty"

foreachfoflocalformat{

gent_`f'=t

formatt_`f'%`f'

}

listin1/20

*说明:

同样的数值,采用不同的显示方式,会有完全不同的含义

*指定起始时点

capdropmonth

generatemonth=m(1990-1)+_n-1

formatmonth%tm

listmonthin1/20

capdropyear

genyear=y(1952)+_n-1

formatyear%ty

listtyearin1/20

*设定不同的显示格式helpdfmt

*

*日期的显示格式%d(%td)定义如下:

*%[-][t]d<描述特定的显示格式>

*

*具体项目释义:

*“<描述特定的显示格式>”中可包含如下字母或字符

*cymlndjhqw_.,:

-/'!

c

*CYMLNDJW

*定义如下:

/*

candC世纪值(个位数不附加/附加0)

yandY不含世纪值的年份(个位数不附加/附加0)

m三个英文字母的月份简写(第一个字母大写)

M英文字母拼写的月份(第一个字母大写)

nandN数字月份(个位数不附加/附加0)

dandD一个月中的第几日(个位数不附加/附加0)

jandJ一年中的第几日(个位数不附加/附加0)

h一年中的第几半年(1or2)

q一年中的第几季度(1,2,3,or4)

wandW一年中的第几周(个位数不附加/附加0)

_displayablank(下划线)

.displayaperiod(句号)

displayacomma(逗号)

:

displayacolon(冒号)

-displayadash(短线)

/displayaslash(斜线)

'displayaclosesinglequote(右引号)

!

cdisplaycharacterc(code!

!

todisplayanexclamationpoint)

*/

*

*例如:

*FormatSampledateinformat

*-----------------------------------

*%td07jul1948

*%tdM_d,_CYJuly7,1948

*%tdY/M/D48/07/11

*%tdM-D-CY07-11-1948

*%tqCY.q1999.2

*%tqCY:

q1992:

2

*%twCY,_w2010,48

*-----------------------------------

*又如:

*FormatSampledateinformat

*----------------------------------

*%d11jul1948

*%dDlCY11jul1948

*%dDlY11jul48

*%dM_d,_CYJuly11,1948

*%dd_M_CY11July1948

*%dN/D/Y07/11/48

*%dD/N/Y11/07/48

*%dY/N/D48/07/11

*%dN-D-CY07-11-1948

*----------------------------------

clear

setobs100

gent=_n+d(13feb1978)(第一个数显示的是1978年2月14对应的数值)

listtin1/5

formatt%dCY-N-D/*1978-02-14*/

listtin1/5

formatt%dcy_n_d/*1978214*/

listtin1/5

useB6_tsset,clear

list

tssett,format(%twCY-m)

list

*一个实例:

生成连续的时间变量

usee1920.dta,clear

listyearmonthin1/30

sortyearmonth

gentime=_n

tssettime

listyearmonthtimein1/30

generatenewmonth=m(1920-1)+time-1

tssetnewmonth,monthly

listyearmonthtimenewmonthin1/30

*---处理日期的函数

helpdates_and_times

helptime-seriesfunctions

*以下适用于STATA9.2版本

*--时间序列日期概览helptdates

*--将文字变量转换为日期helpdlyfcns

*--利用年、月、季度转换日期helpdlyfcns

*--日期转换函数helpdcfcns

*-----------------------

*图解时间序列

*-----------------------

*helptsline

*例1:

clear

setseed13579113

sim_armaar2,ar(0.70.2)nobs(200)

sim_armama2,ma(0.70.2)

tsset_t

tslinear2ma2

*亦可采用twowayline命令绘制,但较为繁琐

twowaylinear2ma2_t(前面两个为纵坐标,后面的为横坐标)

*例2:

增加文字标注

sysusetsline2,clear

tssetday

#delimit;

tslinecalories,ttick(28nov200225dec2002,tpos(in))

ttext(347028nov2002"thanks"

347025dec2002"x-mas",orient(vert));

#delimitcr(clear)

*例3:

增加两条纵向的标示线

sysusetsline2,clear

tssetday

tslinecalories,tline(28nov200225dec2002)(在某时点画垂直线)

*或采用twowayline命令

locald1=d(28nov2002)

locald2=d(25dec2002)

linecaloriesday,xline(`d1'`d2')

*例4:

改变标签

tslinecalories,tlabel(,format(%tdmd))ttitle("Date(2002)")(分别为刻度名和横坐标名)

tslinecalories,tlabel(,format(%td))

******计量分析与Stata应用******

*主讲人:

连玉君博士

*单位:

中山大学岭南学院金融系

*电邮:

*主页:

*:

:

高级部分:

:

*计量分析与Stata应用

*==========================

*第六讲时间序列分析

*==========================

*6.2ARIMA模型

cdd:

\stata10\ado\personal\Net_Course\B6_TimeS

*=======================

*平稳时间序列模型

*=======================

*-----------------

*ARIMA模型helparima

*-----------------

*--AR过程与MA过程

*--自相关系数与偏自相关系数

*--滞后阶数的筛选

*--估计

*--预测

*--简介--

*AR过程(自回归过程)

*AR

(1):

y_t=rho*y_{t-1}+u_t

*AR(p):

y_t=r_1*y_{t-1}+r_2*y_{t-2}+...+r_p*y_{t-p}+u_t

clear

sim_armay_ar,ar(0.9)nobs(300)(自回归系数是0.9,观察值的个数是300)

liney_ar_t,yline(0)(在y=0处画条横线)

*-----------------------------------------------------------

*自相关系数(ACF)

*Cov[y_t,y_{t+s}]

*r_s=-------------------

*Var[y_t]

*偏自相关系数(PACF)

*y_t=a11*y_{t-1}+u_t(a11就是一阶(偏)自相关系数,)

*y_t=a21*y_{t-1}+a22*y_{t-2}+u_t(a22就是二阶偏自相关系数)

*...

*y_t=ak1*y_{t-1}+ak2*y_{t-2}+...+akk*y_{t-k}+u_t

*

*PACF为{a11,a22,a33,...,akk}

*相当于控制其它滞后项的影响后,得到的“净”相关系数

*-----------------------------------------------------------

acy_ar/*AR过程的ACF具有“拖尾”特征,长期记忆*/

pacy_ar/*AR过程的PACF具有“截尾”特征*/

*评论:

根据AC和PAC图形可以初步判断某个序列是否为AR过程

*具体表现为:

*

(1)AC图“拖尾”

*

(2)PAC图“截断”(截断处对应的阶数就是AR的滞后阶数P)

*MA过程(移动平均过程)(干扰项存在一个自相关的过程)

*MA

(1):

y_t=theta*u_{t-1}+u_t

*MA(q):

y_t=theta1*u_{t-1}+theta2*u_{t-2}+...+thetaq*u_{t-q}+u_t

sim_armay_ma,ma(0.8)nobs(300)

liney_ma_t,yline(0)

acy_ma/*MA过程的ACF具有“截尾”特征,短期记忆*/

pacy_ma/*MA过程的PACF具有锯齿型“拖尾”特征*/

*稳定性与可逆性

*定义:

协方差稳定(CovarianceStationary)

*a.E[y_t]独立于t;

*b.Var[y_t]是一个有限的正常数,且独立于t;

*c.Cov[y_t,y_{t+s}]是s的有限函数,但与t无关。

*稳定的AR过程和MA过程可以相互转换

*ARIMA模型(最大似然估计法)

*y_t=x_t*b+u_t结构方程

*u_t=rho*u_{t-1}+theta*v_{t-1}+v_t干扰项,ARMA(1,1)

*一阶自相关一阶移动平均白噪声

*

*很多情况下,模型设定中并不包含解释变量,此时ARMA(1,1)模型可表示为:

*y_t=a+rho*y_{t-1}+theta*v_{t-1}+v_t

*实例:

固定资产投资行为

*--估计--

usewpi1.dta,clear

d

dfullerwpi

gend_wpi=D.wpi

dfullerd_wpi

*ARMA(1,1,1)模型由于原始序列包含单位根,所以要采用ARIMA模型

arimawpi,arima(1,1,1)

*另一种设定方式,更加灵活

arimad_wpi,ar

(1)ma

(1)

*--滞后阶数的确定--

*LL值,AIC准则,BIC准则

*LL越大越好,AIC和BIC越小越好

*AIC=-2*ln(L)+2*k/*ln(L)对数似然值;k参数个数;N样本数*/

*BIC=-2*ln(L)+k*ln(N)

*BIC更倾向于筛选出“精简的”模型

*产生模拟数据:

ARMA(2,1)过程

clear

setseed1357

sim_armay_arma21,ar(0.8)ma(0.2)nobs(300)

*估计ARMA(1,1)模型,MLE

arimay_arma21,ar

(1)ma

(1)

*列示信息准则

estatic

*估计ARMA(2,1)模型

arimay_arma21,ar(12)ma

(1)(既包含一阶,也包含二阶滞后项)

estatic

retlist

matlistr(S)

mats=r(S)

dis"AIC="s[1,5]

*根据信息准则筛选模型

*例1:

模拟数据

tsset_t(设定时间变量)

matb=J(6,4,0)(产生一个矩阵,六行四列,元素全部为0)

localp=1(定义展元)

forvaluesi=1

(1)3{(i=1-3,每次增加1)

forvaluesj=1

(1)2{

matb[`p',1]=`i'

matb[`p',2]=`j'(b矩阵的第一列和第二列分别记录i和j的数值)

quiarimay_arma21,ar(1/`i')ma(1/`j')

eststorearma`i'`j'

quiestatic

matS=r(S)

matb[`p',3]=(S[1,5],S[1,6])

localp=`p'+1

}

}

matcolnamesb=ARMAAICBIC(定义矩阵的名称)(第三列第四列分别记录AIC和BIC的数值)

matlistb

localmmarma11arma12arma21arma22arma31arma32

esttab`mm',mtitle(`mm')compressnogapscalar(llaicbic)

*例2:

真实数据——美国零售价格指数

usewpi1.dta,clear

tssett

linewpit

lineD.wpit

lineD.ln_wpit

acD.ln_wpi/*包含AR过程*/

pacD.ln_wpi/*基本上可以判断是AR

(1),或ARMA(1,1)过程*/

*采用信息准则筛选滞后阶数

localy"D.ln_wpi"

locala=3/*AR(a)*/

localb=1/*MA(b)*/

forvaluesi=1

(1)`a'{

forvaluesj=0

(1)`b'{(0表示有可能只估计一个AR模型)

if`j'==0{

localma""

}

else{

localma"ma(1/`j')"

}

quiarima`

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1