Stata:时间序列数据转换-tstransform

发布时间:2022-05-04 阅读 2541

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者: 史柯 (中央财经大学)
邮箱: shike2231128@gmail.com


目录 [TOC]


1. 引言

tstransform 生成由时间序列运算形成的新变量。 它可以模拟时间序列运算符的滞后、领先、差异和季节性差异。 它还创建了均值、后向均值、前向均值和滚动窗口均值,以及与这些均值的相应偏差。该命令包包括 Stata 的 egen 命令的扩展及独立命令 tstransform,其中 egen 命令的扩展主要是增加了用于时间序列转换的运算函数。

2. tstransform 命令介绍

2.1 命令安装

net install tstransform, from(http://www.kripfganz.de/stata/)

tstransform 命令安装完毕后,可以运行 help tstransform 命令来查阅命令的帮助文档。

2.2 语法结构

tstransform命令是 Sebastian Kripfganz 教授所编写的 Stata 新命令,两种语法结构如下。

2.2.1 egen 命令的扩展命令

第一种命令格式为 egen 命令的扩展命令,语法结构如下:

egen [type] newvar = fcn(arguments) [if] [in] [, options]
  • type:运算得到的新变量的种类。
  • newvar:运算得到的新变量的名称。
  • fcn(arguments):定义新变量的计算方法,运算函数 fcn 主要包括 mean(exp)demean(exp)bmean(exp)bdemean(exp)fmean(exp)fdemean(exp)以及其他egenegenmore原本包含的其他运算函数;运算函数 fcn 的运算对象 arguments 是取决于函数计算用到的表达式(expression)、变量(varlist)或数列(numlist)。

2.2.2 tstransform 命令

第二种命令格式为直接使用 tstransform 命令,语法结构如下:

tstransform varlist [if] [in] , transformation [options]
  • varlist:用于运算的变量
  • transformation:转换命令,主要包括 lag(numlist):生成滞后项 forward(numlist):生成提前项 difference(numlist):生成差分项 seasonal(numlist):生成季度差分项 mean:生成均值(面板内) demean:生成平均偏差(面板内) bmean:生成后向均值(面板内) bdemean:生成后向平均偏差(面板内) fmean:生成前向均值(面板内) fdemean:生成前向平均偏差(面板内)
    rmean(numlist):生成滚动窗口均值(面板内) rdemean(numlist):生成滚动窗口平均偏差(面板内)
  • 主要命令选型(options)包括: rescale:在 i.i.d. 下重新调整重新调整转换后的变量假设 generate([type] string):为转换后的变量指定类型和名称 replace:如果使用 generate() 指定的变量名称或已转换变量的默认名称已经存在,则更改现有变量的内容,该选项不会替代 varlist 变量的取值 nolabel:不标记转换后的变量

2.3 注意事项

  • 在使用第二种语法 tstransform 命令之前需要使用 tsset 命令声明时间变量。
  • 第二种语法默认在面板内计算,而第一种语法需要使用 panelvar ,否则不会在面板内计算。
  • 使用 generate 规定新变量名称时,可采用以下占位符: * 字符代表 varlist 变量的名称。 ~ 字符代表 varlist 中指定的时间序列操作,例如,L 为求滞后项,D 为求差分。 # 字符代表变换 lag(#)、forward(#)、difference(#) 或 seasonal(#) 时的 numlist 的相应元素,例如lag(2)中可用 # 代替2。

3. Stata 实例

下面我们用一个年度数据来检验此命令。为了便于观察,数据集仅包含8个观测值。通过以下命令调用数据:

webuse gxmpl1, clear

/*    Notes:
数据中每个观测值为每一年的消费者物价水平(cpi)及国民生产总值(gnp)

   year:年份
   cpi:消费者物价水平
   gnp:国民生产总值
*/

3.1 生成滞后项

首先,我们使用 tstransform 命令生成 1 至 3 阶滞后的消费者物价水平 cpi,并进行描述性统计,为了比较,同时对通过时间序列运算符得到的时间变量进行描述行统计:

tstransform cpi, lag(1/3)
summarize cpi_L* L(1/3).cpi

结果输入如下:

. summarize cpi_L* L(1/3).cpi

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
      cpi_L1 |          7    139.4714    9.969237        124      152.4
      cpi_L2 |          6    137.3167    8.958888        124      148.2
      cpi_L3 |          5      135.14    8.049411        124      144.5
             |
         cpi |
         L1. |          7    139.4714    9.969237        124      152.4
         L2. |          6    137.3167    8.958888        124      148.2
-------------+---------------------------------------------------------
         L3. |          5      135.14    8.049411        124      144.5

可以看出,使用 tstransform 命令生成的三个滞后项 cpi_L1cpi_L2cpi_L3 与使用L(1/3).cpi 命令生成的三个滞后项等价。

3.2 规定新变量名称

接下来,我们生成 D.cpi 的第二个季节性滞后并通过 generate 选项定义变量名称,其中 * 代表变量名称 cpi , 代表时间序列操作 D ,# 代表阶数 2,因此新变量的名称为 cpi_SD_2 ,再通过 list 命令将变量列示在结果输出窗口:

tstransform D.cpi, seasonal(2) generate(*_S~_#)
list cpi_SD_2 S2D.cpi

结果输出如下:

. list cpi_SD_2 S2D.cpi

     +-----------------------+
     |                   DS2.|
     |  cpi_SD_2         cpi |
     |-----------------------|
  1. |         .           . |
  2. |         .           . |
  3. |         .           . |
  4. | -2.599991   -2.599991 |
  5. | -1.300003   -1.300003 |
     |-----------------------|
  6. | -.4000092   -.4000092 |
  7. |         0           0 |
  8. |  .8000031    .8000031 |
     +-----------------------+

使用 tstransform 命令生成的新变量 cpi_SD_2 与 直接使用 S2D.cpi 效果相同,均为 cpi_t - cpi_t-1 - cpi_t-2 + cpi_t-3,因此只有从第四个观测值开始该变量才能计算,其中 DS2S2D 是等价的,即先取一阶差分(D)再取二阶季节性差分(S2)等价于先取二阶季节性差分(S2)再取一阶差分(D)。

3.3 滚动窗口均值

使用 tstransform 命令计算滚动窗口为过去三个观测值及当前观测值共四个观测值的 cpi 均值,并通过 list 命令列示:

tstransform cpi, rmean(-3/0)
list cpi*

结果输出如下:

. list cpi*

     +-----------------------------+
     |   cpi    cpi_SD_2    cpi_RM |
     |-----------------------------|
  1. |   124           .       124 |
  2. | 130.7           .    127.35 |
  3. | 136.2           .     130.3 |
  4. | 140.3   -2.599991     132.8 |
  5. | 144.5   -1.300003   137.925 |
     |-----------------------------|
  6. | 148.2   -.4000092     142.3 |
  7. | 152.4           0    146.35 |
  8. | 156.9    .8000031     150.5 |
     +-----------------------------+

其中 cpi_SD_2 为上一部分已经生成的变量,通过 tstransform 命令计算的滚动窗口均值为 cpi_RM

4. 结语

tstransform 命令可以模拟传统时间序列运算符的滞后、领先、差异和季节性差异,同时也提供了均值、后向均值、前向均值和滚动窗口均值的计算方法,此外,还能通过占位符的使用实现新变量命名的便捷。

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh