Stata 处理面板数据的相关命令

在撰写论文时,我们通常会用到面板数据进行分析。Stata 是目前主流的计量软件之一,具有处理数据高效、回归模型丰富和可输出计量结果等特点。本文记录一些用 Stata 处理面板数据的命令,以备日后所需。

Panel Data

系统:Win10

Stata 版本:StataSE 15(64-bit)

下载 Stata 14 和 Stata 15.1

面板数据的格式

导入数据

Stata 中要求的面板数据的格式如下:

companyyearvar1var2var3
12017123789741
12018456246258
12019789123963
22017246222475
22018135444569
22019369777124
…………………………

但我们在准备数据时,通常是一个变量一个 Sheet,每一个 Sheet 里是 N 个 Company 和 N 个 Year,如何处理成 Stata 要求的面板数据格式呢?

  • 方法①:数据量小,手动处理💪
  • 方法②:借助 Stata reshape 命令,请自行 help reshape 查看,因为我也没用过😅。
  • 方法③:先在 Excel 中处理成要求的格式,在复制粘贴到 Stata(推荐👍)

下面用一个 Gif 说明方法③

Excel处理数据为面板格式数据

对所有的变量采用方法③,汇总后即可得到 Stata 要求的面板格式的数据。将汇总后的数据粘贴到 Stata 中,完成数据的导入工作。

设置数据

观察导入到 Stata 中的数据是否出现红色的数字,若没有飘红的数字,则数据OK。若出现飘红的数字,则说明该数字为字符型,不是数字型。按照下述命令进行处理:

  • 使用命令 gen newvar = real(var) 将该变量的值转化为数字型/
  • 使用命令 drop var 删除原有变量
  • 使用命令 rename var newvar 重新命名新生成的变量名为最初的变量名

数据达到使用标准后,需要将数据设置为面板数据的格式,使用命令 tsset company year 进行设置,程序将会输出类似于下述结果:

panel variable: company, 1 to 10
time variable: time, 1 to 10

至此,完成数据导入和设置的工作。

关于季度时间的问题

如果面板数据的时间跨度为季度,则Excel中处理的诸如2019q1的日期在 Stata 并不可直接使用,还需要进行转换。因为 Stata 会将2019q1识别为文本,而不是日期型数值。

假设季度时间列的变量名为 quarter,则使用下列命令可以得到正确的日期序列。

  • gen newquarter = quarterly(quarter,"YQ") ——核心命令
  • form newquarter %tq ——核心命令
  • drop quarter ——删除原日期序列
  • rename newquarter quarter ——重命名新日期序列

统计描述

在正式的模型估计前,需要对数据的进行描述性统计,可使用的命令有:

  • xtdes :对面板数据的截面个数和时间跨度进行描述
  • xtsum :对面板数据进行分组内、组间和整体的描述性统计(常用)
  • xttab :以列表的形式展示某个变量的分布
  • tab :按行业进行统计,具体命令 tab IndVar if year == 2019
  • bysort :按年度进行统计,具体命令 bysort year: tab IndVar
  • by & egen:产生组内均值,具体命令 by company: egen meanvar = mean(var1)

生成相关系数表

Stata 的生成相关系数表命令得到的结果不带星号(代表不同的显著性水平),我通常使用的是 中山大学连玉君老师 编写的pwcorr_a命令,使用方法如下所示:

  • 下载ado文件:Stata 输出带星号的相关系数表ado文件 提取码: j9gz
  • 将其中的 pwcorr_a.ado 文件放入 Stata 安装目录下的 /ado/base/p 文件夹中,将其中的 spearman_a.ado 文件放入 Stata 安装目录下的 /ado/base/s 文件夹中。
  • 使用命令 pwcorr_a var1 var2 var3 ... varn, star1(0.01) star5(0.05) star10(0.1) 就能得到带星号的相关系数表

这篇文章有一个评论

  1. 尝试用 Gutenberg Editor 编辑文章,发现显示效果比直接用 Markdown 编辑器来得好。大多数 Markdown 语法也被直接渲染了出来,效果不错!😁

发表评论

关闭菜单