内容发布更新时间 : 2024/12/23 16:41:34星期一 下面是文章的全部内容请认真阅读。
时间序列模型
结构模型虽然有助于人们理解变量之间的影响关系,但模型的预测精度比较低。在一些大规模的联立方程中,情况更是如此。而早期的单变量时间序列模型有较少的参数却可以得到非常精确的预测,因此随着Box and Jenkins(1984)等奠基性的研究,时间序列方法得到迅速发展。从单变量时间序列到多元时间序列模型,从平稳过程到非平稳过程,时间序列分析方法被广泛应用于经济、气象和过程控制等领域。本章将介绍如下时间序列分析方法,ARIMA模型、ARCH族模型、VAR模型、VEC模型、单位根检验及协整检验等。
一、基本命令
1.1时间序列数据的处理
1)声明时间序列:tsset 命令
use gnp96.dta, clear list in 1/20 gen Lgnp = L.gnp
tsset date list in 1/20
gen Lgnp = L.gnp
2)检查是否有断点:tsreport, report
use gnp96.dta, clear tsset date tsreport, report drop in 10/10
list in 1/12
tsreport, report
tsreport, report list /*列出存在断点的样本信息*/
3)填充缺漏值:tsfill
tsfill
tsreport, report list list in 1/12
4)追加样本:tsappend
use gnp96.dta, clear tsset date list in -10/-1 sum
tsappend , add(5) /*追加5个观察值*/ list in -10/-1 sum
5)应用:样本外预测: predict
reg gnp96 L.gnp96 predict gnp_hat list in -10/-1
6)清除时间标识: tsset, clear
tsset, clear
1.2变量的生成与处理
1)滞后项、超前项和差分项 help tsvarlist
use gnp96.dta, clear tsset date
gen Lgnp = L.gnp96 /*一阶滞后*/ gen L2gnp = L2.gnp96
gen Fgnp = F.gnp96 /*一阶超前*/ gen F2gnp = F2.gnp96
gen Dgnp = D.gnp96 /*一阶差分*/ gen D2gnp = D2.gnp96 list in 1/10 list in -10/-1
2)产生增长率变量: 对数差分
gen lngnp = ln(gnp96) gen growth = D.lngnp
gen growth2 = (gnp96-L.gnp96)/L.gnp96
gen diff = growth - growth2 /*表明对数差分和变量的增长率差别很小*/ list date gnp96 lngnp growth* diff in 1/10
1.3日期的处理
日期的格式 help tsfmt
基本时点:整数数值,如 -3, -2, -1, 0, 1, 2, 3 .... 1960年1月1日,取值为 0;
显示格式: 定义 含义 默认格式 %td %tw %tm %tq %th %ty 日 周 月 季度 半年 年 %tdDlCY %twCY!ww %tmCY!mn %tqCY!qq %thCY!hh %tyCY
1)使用 tsset 命令指定显示格式
use B6_tsset.dta, clear tsset t, daily list
use B6_tsset.dta, clear tsset t, weekly list
2)指定起始时点 cap drop month
generate month = m(1990-1) + _n - 1 format month %tm
list t month in 1/20
cap drop year
gen year = y(1952) + _n - 1 format year %ty
list t year in 1/20
3)自己设定不同的显示格式
日期的显示格式 %d (%td) 定义如下: %[-][t]d<描述特定的显示格式> 具体项目释义:
“<描述特定的显示格式>”中可包含如下字母或字符 c y m l n d j h q w _ . , : - / ' !c C Y M L N D 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 YlCY 11jul1948 YlY 11jul48 %dM_d,_CY July 11, 1948 Y_M_CY 11 July 1948 %dN/D/Y 07/11/48 Y/N/Y 11/07/48 %dY/N/D 48/07/11 %dN-D-CY 07-11-1948
----------------------------------
clear
set obs 100
gen t = _n + d(13feb1978) list t in 1/5
format t üY-N-D /*1978-02-14*/ list t in 1/5
format t üy_n_d /*1978 2 14*/ list t in 1/5
use B6_tsset, clear list
tsset t, format(%twCY-m) list
4)一个实例:生成连续的时间变量 use e1920.dta, clear list year month in 1/30 sort year month gen time = _n tsset time
list year month time in 1/30
generate newmonth = m(1920-1) + time - 1 tsset newmonth, monthly
list year month time newmonth in 1/30
1.4图解时间序列 1)例1: clear
set seed 13579113
sim_arma ar2, ar(0.7 0.2) nobs(200) sim_arma ma2, ma(0.7 0.2) tsset _t
tsline ar2 ma2
* 亦可采用 twoway line 命令绘制,但较为繁琐 twoway line ar2 ma2 _t
2)例2:增加文字标注 sysuse tsline2, clear tsset day
tsline calories, ttick(28nov2002 25dec2002, tpos(in)) /// ttext(3470 28nov2002 \
3470 25dec2002 \3)例3:增加两条纵向的标示线 sysuse tsline2, clear tsset day