Stata时间序列数据的预处理

您所在的位置:网站首页 stata设置新变量命令 Stata时间序列数据的预处理

Stata时间序列数据的预处理

2024-06-27 08:42| 来源: 网络整理| 查看: 265

Stata时间序列数据的预处理

一、时间序列数据的预处理操作概述

在进行时间序列分析前,我们往往需要对数据进行预处理,预处理操作主要包括定义时间序列、绘制时间序列趋势图、扩展时间区间等。 对于一个带有日期变量的数据文件,Stata   16.0并不会自动识别并判定该数据是否是时间序列数据,尤其是数据含有多个日期变量的情形,所以要选取恰当的日期变量,然后定义时间序列,只有定义时间变量之后,才能方便地使用各种时间序列算子以及相关的时间序列分析命令。绘制时间序列趋势图的意义是可以迅速看出数据的变化特征,为后续更加精确地判断或者选择合适的模型做好必要准备。此外,在很多情况下,随着时间的推移,研究者得到了新的观测值,或者需要对时间序列进行预测,就会用到扩展时间区间的操作。

二、时间序列数据预处理的Stata操作

1 .定义时间序列

(1 )定义时间序列的命令

对于带有日期变量的数据文件, Stata   16.0并不会自动识别并判定该数据是否是时间序列数据,需要将数据定义为时间序列数据,只有定义时间变量之后,才能方便地使用各种时间序列算子以及相关的时间序列分析命令。

定义时间序列的命令及其语法格式为:

tsset timevar [,options]

tsset为定义时间序列的命令, timevar为用于标识时间序列数据的时间变量, [,options]为可选项,包括两类, 一类为unitoptions ,用来设置时间变量的单位,即设置时间是按照什么变化的,如天、周、日、小时等;另一类为deltaoptions ,设置时间变量的周期,即设置时间变量相邻样本观测值之间的间隔时间为几个单位。

其中unitoptions可选项及其含义如下表所示。

deltaoptions可选项及其应用如下表所示。

(2 )调整时间设置的初始值

很多情况下,数据文件中timevar值的起始值为1 ,然后依次排序为   1 、2 、3 、4 、5… … ,我们完全可以通过函数将起始值调整到具有实际意义的日期。比如在某个数据文件中, timevar值就是起始值为1 ,然后依次排序为1 、2 、3 、4 、5… ,但实际上数据是从2004年6月开始的(即 timevar=1代表的是2004年6月的数据, timevar=2代表的是2004年7月的   数据…… ),为了赋予timevar实际日期,可以输入以下命令:

generate newtimevar=tm(2004m6 )+timevar-1

generate为生成变量的命令, newtimevar为新生成变量的名称,函数 tm()可将时间转换成Stata系统默认的格式。但是在Stata系统默认的格式下可能是不易读的,因为Stata系统定义1960年1月为第0个月,所以2004 年6月对应第533个月,因而timevar=1对应的样本观测值

newtimevar=533 。而533是不易解读或者说无法直观解释的,所以需要 执行以下命令:

format newtimevar %tm

将变量newtimevar转换成%tm格式,以便于用户阅读。

在调整好时间设置的初始值后,记得重新设置时间变量,即把新生成的newtimevar作为时间变量,具体命令形式为:tsset newtimevar

(3 )当时间变量为字符串形式时的处理

在有些情况下,在数据文件中拟指定为timevar 的变量是字符串格式的,我们需要首先将其转换成时间变量, 一般通过generate命令来实现。比如现有数据文件中timevar为字符串格式且单位为毫秒,按照“ 月- 日-年 小时:分:秒” 的格式显示,那么命令形式为:

generate double newtimevar=clock(timevar,"MDYhms")

在将字符串变量转换为时间变量后,我们需要重新设置时间变量, 即把新生成的newtimevar作为时间变量,具体命令形式为:

tsset newtimevar, clocktime

虽然时间变量timevar 、newtimevar 的单位为毫秒,但是我们可以通过选项deltaoption设置时间变量的周期(period   of   timevar ),即设置时间变量相邻样本观测值之间的间隔时间为几个单位,以方便下面将要介绍的时间序列算子的使用。

比如我们想要设置时间间隔为5分钟,那么命令为:

tsset newtimevar ,delta ((1000*60*5 ))

因为单位为毫秒, 1000毫秒即为1秒, 1000*60毫秒即为1分钟, 1000*60*5 即为5分钟。

(4 )清除数据的时间序列格式

如果我们要把数据恢复为普通的数据,那么命令就是:

tsset,clear

在命令窗口中输入命令并按回车键进行确认即可。

2 .扩展时间区间

扩展时间区间的命令及其语法格式为:

tsappend, { add(# ) | last(date|clock ) tsfmt(string ) } [options]

用户在使用tsappend命令扩展时间区间之前,必须先用tsset命令定义时间变量。 tsappend为扩展时间区间的命令; add(# )与last(date|clock ) tsfmt(string )用于设置需扩展时间区间的具体情形, 两者选其一即可, add(# )用于指定要增加的样本观测值个数。如果不设置add()选项,就必须同时设置last(date|     clock )和tsfmt(string )。 last(date|clock )用于指定我们要将时间扩展到的日期, tsfmt(string ) 用于将last(date|clock )选项中的日期转化成Stata默认时间所对应的整数,可用的string包括tc 、td 、tw 、tm 、tq 、th和ty。

3 .绘制时间序列趋势图

绘制时间序列趋势图的命令及其语法格式为:

twoway(line varname timevar)

其中twoway(line )为绘制时间序列趋势图的命令, varname为参与绘制时间序列趋势图的变量, timevar为时间变量。

一般情况下,我们要消除变量的时间序列长期走势后(或者说变量 平稳后)才能进行回归得出有效的结论,所以在绘制变量序列图的时候,如果该变量存在趋势,就应该进行一阶差分后再进行查看。所谓变量的一阶差分,指的是对变量的原始数据进行处理,用前面的数据减去 后面的数据后得出的一个新的时间序列。如果变量的一阶差分还是存在趋势,就应该进行二阶差分后再进行查看,以此类推,直到数据平稳。 所谓二阶差分,指的是在把一阶差分得到的时间序列数据作为原始数据,并进行前项减后项处理后得出新的时间序列。 一般情况下,如果数据的低阶差分是平稳的,那么高阶差分也是平稳的。

4.    时间序列算子

对时间序列数据进行处理时常常会用到变量的差分值、滞后值等。 如果我们要观测相邻两期数据之间的变化,则需要用到变量的差分值。 如果我们设置即期(当期)值为X, 则常用的时间序列算子及具体含义如下表所示。

5 .信息准则

在很多时间序列模型的拟合中,需要用到信息准则的概念,在此进行特别介绍。众所周知,我们在拟合模型时,如果增加自由参数(或者理解为增加解释变量),可以在一定程度上提升拟合的效果,或者说提升模型的解释能力,但是自由参数(解释变量)的增加同时也会带来过度拟合(Overfitting )的情况,甚至极端情况下出现多种共线性。为了达到一种平衡,帮助研究者合理选取自由参数(解释变量)的数目,统计学家们提出了信息准则的概念。信息准则鼓励数据拟合的优良性,但是同时针对多的自由参数(解释变量)采取了惩罚性措施,在应用信息准则时,无论何种信息准则,都是信息准则越小,说明模型拟合得越

好。假设有n个模型备选,可一次计算出n个模型的信息准则值,并找出最小信息准则值相对应的模型作为最终选择。

常用的信息准则包括赤池信息准则 (Akaike's   Criterion,AIC) 、   施瓦茨信息准则 (Schwarz's       Bayesian   Criterion,SBIC或者SC) 以及汉南-昆信息准则 (Hannan

Information        Criterion,HQIC)。其中赤池信息准则、施瓦茨信息准则的计算公式为:

三、 时间序列数据预处理分析示例

我们使用的数据来自“数据13”数据文件,其中记录了某大型 连锁商超15个门店的2015年至2019年的冰箱销售数据。这个数据文件中共有18个变量,为V1~V19, 分别表示“连锁门店1”~"连锁门店15"共15个门店变量以及“销量总数”“年份”"月份”"日期”4个变量,如下图所示。

从该数据文件中可以看出,无论是变量“年份”还是"月份”都不能代表时间变量,只有“日期”才是最为恰当的时间变量,其中同时包含年份和月份的信息。但是“ 日期”在该数据文件中为字符串变量,不能直接设置为时间变量。

在该数据文件的命令窗口中输入:

generate month=monthly(V19,"YM")

本命令的含义是以生成新变量month的方式,将V19变量由字符串变量转换为数值变量。

format month %tm

本命令的含义是将变量month转换成%tm格式,以便于用户阅读。

tsset month

本命令的含义是将上一步生成的新变量month指定为时间变量。

twoway(line V16 month)

本命令的含义是以month为横轴,以V16(销售总额)为纵轴,绘制V16(销售总额)随时间变量month变化的时间序列趋势图,该命令的执行结果如下图所示。

twoway(line   d.V16   month)

本命令的含义是以month为横轴,以V16 (销售总额)的一阶差分值(d.V16) 为纵轴,绘制V16 (销售总额)的一阶差分值 (d.V16) 随时间变量month变化的时间序列趋势图,绘制结果如下图所示。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3