当前位置:文档之家› 时间序列模型stata 基本命令汇总..

时间序列模型stata 基本命令汇总..

时间序列模型结构模型虽然有助于人们理解变量之间的影响关系,但模型的预测精度比较低。

在一些大规模的联立方程中,情况更是如此。

而早期的单变量时间序列模型有较少的参数却可以得到非常精确的预测,因此随着Box and Jenkins(1984)等奠基性的研究,时间序列方法得到迅速发展。

从单变量时间序列到多元时间序列模型,从平稳过程到非平稳过程,时间序列分析方法被广泛应用于经济、气象和过程控制等领域。

本章将介绍如下时间序列分析方法,ARIMA模型、ARCH族模型、VAR模型、VEC模型、单位根检验及协整检验等。

一、基本命令1.1时间序列数据的处理1)声明时间序列:tsset 命令use gnp96.dta, clearlist in 1/20gen Lgnp = L.gnptsset datelist in 1/20gen Lgnp = L.gnp2)检查是否有断点:tsreport, reportuse gnp96.dta, cleartsset datetsreport, reportdrop in 10/10list in 1/12tsreport, reporttsreport, report list /*列出存在断点的样本信息*/3)填充缺漏值:tsfilltsfilltsreport, report listlist in 1/124)追加样本:tsappenduse gnp96.dta, cleartsset datelist in -10/-1sumtsappend , add(5) /*追加5个观察值*/list in -10/-1sum5)应用:样本外预测: predictreg gnp96 L.gnp96predict gnp_hatlist in -10/-16)清除时间标识: tsset, cleartsset, clear1.2变量的生成与处理1)滞后项、超前项和差分项 help tsvarlistuse gnp96.dta, cleartsset dategen Lgnp = L.gnp96 /*一阶滞后*/gen L2gnp = L2.gnp96gen Fgnp = F.gnp96 /*一阶超前*/gen F2gnp = F2.gnp96gen Dgnp = D.gnp96 /*一阶差分*/gen D2gnp = D2.gnp96list in 1/10list in -10/-12)产生增长率变量: 对数差分gen lngnp = ln(gnp96)gen growth = D.lngnpgen growth2 = (gnp96-L.gnp96)/L.gnp96gen diff = growth - growth2 /*表明对数差分和变量的增长率差别很小*/ list date gnp96 lngnp growth* diff in 1/101.3日期的处理日期的格式 help tsfmt基本时点:整数数值,如 -3, -2, -1, 0, 1, 2, 3 ....1960年1月1日,取值为 0;1)使用 tsset 命令指定显示格式use B6_tsset.dta, cleartsset t, dailylistuse B6_tsset.dta, cleartsset t, weeklylist2)指定起始时点cap drop monthgenerate month = m(1990-1) + _n - 1format month %tmlist t month in 1/20cap drop yeargen year = y(1952) + _n - 1format year %tylist t year in 1/203)自己设定不同的显示格式日期的显示格式 %d (%td) 定义如下:%[-][t]d<描述特定的显示格式>具体项目释义:“<描述特定的显示格式>”中可包含如下字母或字符c y m l nd j h q w _ . , : - / ' !cC Y M L ND J W定义如下:c and C 世纪值(个位数不附加/附加0)y and Y 不含世纪值的年份(个位数不附加/附加0)m 三个英文字母的月份简写(第一个字母大写) M 英文字母拼写的月份(第一个字母大写)n and N 数字月份(个位数不附加/附加0)d and D 一个月中的第几日(个位数不附加/附加0)j and J 一年中的第几日(个位数不附加/附加0)h 一年中的第几半年 (1 or 2)q 一年中的第几季度 (1, 2, 3, or 4)w and W 一年中的第几周(个位数不附加/附加0)_ display a blank (空格). display a period(句号), display a comma(逗号): display a colon(冒号)- display a dash (短线)/ display a slash(斜线)' display a close single quote(右引号)!c display character c (code !! to display an exclamation point)样式1:Format Sample date in format-----------------------------------%td 07jul1948%tdM_d,_CY July 7, 1948%tdY/M/D 48/07/11%tdM-D-CY 07-11-1948%tqCY.q 1999.2%tqCY:q 1992:2%twCY,_w 2010, 48-----------------------------------样式2:Format Sample date in format----------------------------------%d 11jul1948%dDlCY 11jul1948%dDlY 11jul48%dM_d,_CY July 11, 1948%dd_M_CY 11 July 1948%dN/D/Y 07/11/48%dD/N/Y 11/07/48%dY/N/D 48/07/11%dN-D-CY 07-11-1948----------------------------------clearset obs 100gen t = _n + d(13feb1978)list t in 1/5format t %dCY-N-D /*1978-02-14*/list t in 1/5format t %dcy_n_d /*1978 2 14*/list t in 1/5use B6_tsset, clearlisttsset t, format(%twCY-m)list4)一个实例:生成连续的时间变量use e1920.dta, clearlist year month in 1/30sort year monthgen time = _ntsset timelist year month time in 1/30generate newmonth = m(1920-1) + time - 1tsset newmonth, monthlylist year month time newmonth in 1/301.4图解时间序列1)例1:clearset seed 13579113sim_arma ar2, ar(0.7 0.2) nobs(200)sim_arma ma2, ma(0.7 0.2)tsset _ttsline ar2 ma2* 亦可采用 twoway line 命令绘制,但较为繁琐twoway line ar2 ma2 _t2)例2:增加文字标注sysuse tsline2, cleartsset daytsline calories, ttick(28nov2002 25dec2002, tpos(in)) /// ttext(3470 28nov2002 "thanks" ///3470 25dec2002 "x-mas", orient(vert)) 3)例3:增加两条纵向的标示线sysuse tsline2, cleartsset daytsline calories, tline(28nov2002 25dec2002) * 或采用 twoway line 命令 local d1 = d(28nov2002) local d2 = d(25dec2002)line calories day, xline(`d1' `d2')4)例4:改变标签tsline calories, tlabel(, format(%tdmd)) ttitle("Date (2002)") tsline calories, tlabel(, format(%td))二、ARIMA 模型和SARMIA 模型ARIMA 模型的基本思想是:将预测对象随时间推移而形成的数据序列视为一个随机序列,用一定的数学模型来近似描述这个序列。

这个模型一旦被识别后就可以从时间序列的过去值及现在值来预测未来值。

ARIMA(1,1)模型:t t t t y y εθερα+++=--112.1 ARIMA 模型预测的基本程序:1) 根据时间序列的散点图、自相关函数和偏自相关函数图以ADF 单位根检验其方差、趋势及其季节性变化规律,对序列的平稳性进行识别。

一般来讲,经济运行的时间序列都不是平稳序列。

2) 对非平稳序列进行平稳化处理。

如果数据序列是非平稳的,并存在一定的增长或下降趋势,则需要对数据进行差分处理,如果数据存在异方差,则需对数据进行技术处理,直到处理后的数据的自相关函数值和偏相关函数值无显著地异于零。

3) 根据时间序列模型的识别规则,建立相应的模型。

若平稳序列的偏相关函数是截尾的,而自相关函数是拖尾的,可断定序列适合AR 模型;若平稳序列的偏相关函数是拖尾的,而自相关函数是截尾的,则可断定序列适合MA 模型;若平稳序列的偏相关函数和自相关函数均是拖尾的,则序列适合ARMA 模型。

4) 进行参数估计,检验是否具有统计意义。

5) 进行假设检验,诊断残差序列是否为白噪声。

6) 利用已通过检验的模型进行预测分析。

2.2 ARIMA 模型中AR 和MA 阶数的确定方法: clearsim_arma y_ar, ar(0.9) nobs(300) line y_ar _t, yline(0)ac y_ar /*AR 过程的 ACF 具有“拖尾”特征,长期记忆*/ pac y_ar /*AR 过程的 PACF 具有“截尾”特征*/sim_arma y_ma, ma(0.8)line y_ma _t, yline(0)ac y_ma /*MA过程的 ACF 具有“截尾”特征,短期记忆*/pac y_ma /*MA过程的 PACF 具有锯齿型“拖尾”特征*/2.3 ARIMA模型中涉及的检验:use /data/r11/wpi1 ,cleartsset tgen d_wpi = D.wpidfuller wpi /*单位根检验*/dfuller d_wpiwntestq wpi /*白噪声检验:Q检验*/wntestq d_wpiwntestb wpi,table /*累积统计Q检验并以列表显示*/wntestb d_wpi,tablewntestb wpi /*画出累积统计量Q*/wntestb d_wpi /*画出累积统计量Q*/corrgram wpi ,lag(24) /*自相关、偏相关、Q统计量*/corrgram d_wpi ,lag(24)2.4 ARIMA模型和SARIMA模型的估计ARIMA模型:use /data/r11/wpi1 ,cleargen d_wpi = D.wpiarima wpi,arima(1,1,1) /* 没有漂移项即常数项的命令是noconstant */ * 或者下面的这种形式也行arima D.wpi,ar(1) ma(1)SARIMA模型:use /data/r11/air2,clearline air tgenerate lnair=ln(air)arima lnair,arima(0,1,1) sarima(0,1,1,12) noconstant2.5 ARIMA模型的一个真实应用——美国批发物价指数use /data/r11/wpi1 ,cleardfuller wpi /*单位根检验*/gen d_wpi = D.wpidfuller d_wpiarima wpi,arima(1,1,1) /* 没有漂移项即常数项的命令是noconstant */ * 或者下面的这种形式也行arima D.wpi,ar(1) ma(1)ac D.ln_wpi,ylabels(-.4(.2).6)pac D.ln_wpi,ylabels(-.4(.2).6)arima D.ln_wpi,ar(1) ma(1/4)estat ic /*LL 越大越好, AIC 和 BIC 越小越好*/arima D.ln_wpi,ar(1) ma(1 4) /*季节效应 */estat ic* 残差检验predict r,reswntestq r /*白噪声检验:Q检验*/wntestb r,table /*累积统计Q检验并以列表显示*/wntestb r /*画出累积统计量Q*/corrgram r ,lag(24) /*自相关、偏相关、Q统计量*/* 样本内预测predict y_hat0 /* y的拟合值 */* 样本外预测list in -15/-1tsappend, add(8)list in -15/-1predict y_hat1 /* y 的样本外一步预测值 */list in -15/-1gen Dln_wpi = D.ln_wpisumpredict y_hat_dy0, dynamic(124) /*动态预测*/predict y,y /*对未差分变量的预测*/predict fy,y dynamic(124)gen fwpi=exp(fy) /*实际wpi的预测值*/gen ywpi=exp(y)line wpi fwpi ywpi t in -20/-1三、ARCH 模型传统的计量经济学对时间序列变量的第二个假设:假定时间序列变量的波动幅度(方差)是固定的,不符合实际,比如,人们早就发现股票收益的波动幅度是随时间而变化的,并非常数。

相关主题