👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:最新专题 | 计量专题 | 关于连享会
🍓 课程推荐:2024 空间计量专题
主讲老师:范巧 (兰州大学)
课程时间:2024 年 10 月 2-4 日 (三天)
课程咨询:王老师 18903405450(微信)
课程特色 · 2024空间计量:
👉 一、从“零基础”到“高水平”的课程设计
兼顾基础知识、主流模型与前沿模型 既考虑软件安装、程序编写以及空间权重矩阵设计等 基础知识 讲授,更强调时空面板地理加权回归模型、贝叶斯空间计量模型、矩阵指数模型、空间计量交互模型与空间面板似不相关回归模型等 前沿模型 的传授。
👉 二、“保姆级”的空间计量代码
编写与校准所有模型的MATLAB代码,简化实操环节 模型的估计与检验等 仅按照提供的Excel数据版式 搜集与整理原始数据,即可一次性出结果并作图。
👉 三、“最多上新” 的内容体系
新增 矩阵指数模型、短面板空间似不相关模型、空间计量交互模型、贝叶斯空间计量模型等 新增 前沿应用案例,包括空间计量与索洛余值法、随机前沿分析与数据包络分析等的互嵌研究,阐释基于空间计量的产业空间结构优化评价方法。 新增 Dagum空间基尼系数、核密度估计、空间马尔科夫链与空间收敛性等内容,阐释现实研究中对空间收敛性的应用“谬误”。
作者:王俊 (中山大学)
邮箱:wangj676@mail2.sysu.edu.cn
目录
1. 滚动窗口回归
2. rollreg 命令
3. rolling 命令
4. rolling2 命令
5. asreg 命令
6. 参考文献
7. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:
1. 滚动窗口回归
此前,连享会分享了推文「滚动吧统计量!Stata数据处理」(微信版),重点介绍了如果获取滚动窗口统计量,如均值、标准差等。
在实证中分析中,我们也经常要以某个长度的窗口进行滚动回归。例如,在计算企业风险承担水平时,我们就需要计算连续三年的经行业调整的 ROA 标准差。
本文的主要目的是介绍滚动窗口回归命令 rollreg
、rolling
、rolling2
、asreg
的用法,以帮助大家在实证分析中更好应用该方法。
2. rollreg 命令
语法
rollreg [depvar varlist] [if exp] [in range], move(#) | add(#) |
dropfirst(#) stub(abbrev) [ robust bw(#) kernel(choice) noconstant
graph(summary|full) ]
depvar
为被解释变量;varlist
为解释变量;move
为移动窗口大小;add
设定初始窗口大小;stub
设定新变量名称。
当然,在回归之前,必须要使用 tsset
或 xtset
声明时间序列或面板数据。
案例
webuse invest2, clear
xtset company time
//外网无法下载时,可以访问连享会数据仓库下载
//数据地址:https://gitee.com/arlionn/data/blob/master/data01/invest2.dta
*设定移动窗口为5
rollreg market invest time, move(5) stub(mktM)
3. rolling 命令
语法
rolling [exp_list] [if] [in], window(#) [options] : command
window(#)
设定滚动的窗口大小,相当于每次滚动过程中需要的连续数据个数;recursive
设定起始点不变,每次滚动窗口加 1;rrecursive
设定结束点不变,每次滚动窗口加 1;clear
用滚动的结果来替换原内存,即使原来内存里的数据没有被保存;stepsize(#)
设定每次滚动窗口增加的时期个数;start(time_constant)
滚动的起始时间点;end(time_constant)
滚动的结束时间点。
在滚动回归之前,必须要 tsset
或 xtset
声明时间变量。当使用 rolling
命令时,window(#)
选项是必须的,其含义是每次回归的窗口大小。
案例
clear
webuse lutkepohl2, clear
tsset qtr
rolling _b _se, window(30): regress dln_inv dln_inc dln_consump
list start end in 1/10
//外网无法下载时,可以访问连享会数据仓库下载
//数据地址:https://gitee.com/arlionn/data/blob/master/data01/lutkepohl2.dta
+-----------------+
| start end |
|-----------------|
1. | 1960q1 1967q2 |
2. | 1960q2 1967q3 |
3. | 1960q3 1967q4 |
4. | 1960q4 1968q1 |
5. | 1961q1 1968q2 |
|-----------------|
6. | 1961q2 1968q3 |
7. | 1961q3 1968q4 |
8. | 1961q4 1969q1 |
9. | 1962q1 1969q2 |
10. | 1962q2 1969q3 |
+-----------------+
可以看出来,从 1960q1 到 1967q2 共有 30 个时间单位,之后起始点和结束点都加 1,窗口大小保持不变。
webuse lutkepohl2, clear
tsset qtr
rolling _b _se, window(30) recursive: ///
regress dln_inv dln_inc dln_consump
list start end in 1/10
当设定 recursive
选项时,起始时点被固定,结束时点每次向后滚动一个单位,那么 window
的大小也就会从 30 依次加 1。在该例中,观察值一共有 92 个,而滚动回归的窗口是 30,所以回归的总次数是 92-30+1=63
。
+-----------------+
| start end |
|-----------------|
1. | 1960q1 1967q2 |
2. | 1960q1 1967q3 |
3. | 1960q1 1967q4 |
4. | 1960q1 1968q1 |
5. | 1960q1 1968q2 |
|-----------------|
6. | 1960q1 1968q3 |
7. | 1960q1 1968q4 |
8. | 1960q1 1969q1 |
9. | 1960q1 1969q2 |
10. | 1960q1 1969q3 |
+-----------------+
可以看出,从 1960q1 到 1967q2 共有 30 个时间单位,而后每次回归窗口加 1,起始点不变。
webuse lutkepohl2, clear
tsset qtr
rolling _b _se, window(30) rrecursive: ///
regress dln_inv dln_inc dln_consump
list start end in -10/-1
//外网无法下载时,可以访问连享会数据仓库下载
//数据地址:https://gitee.com/arlionn/data/blob/master/data01/lutkepohl2.dta
当设定 rrecursive
选项时,结束时点被固定,起始时点每次滚动向前推 1 单位。
+-----------------+
| start end |
|-----------------|
54. | 1973q2 1982q4 |
55. | 1973q3 1982q4 |
56. | 1973q4 1982q4 |
57. | 1974q1 1982q4 |
58. | 1974q2 1982q4 |
|-----------------|
59. | 1974q3 1982q4 |
60. | 1974q4 1982q4 |
61. | 1975q1 1982q4 |
62. | 1975q2 1982q4 |
63. | 1975q3 1982q4 |
+-----------------+
可以看出,1975q3 到 1982q4 是 30 个时间单位,每次回归窗口加 1,结束时点不变。
Stata
默认会以 _b
开头来命名估计出的系数,并将结果保存下来。另外,可以在 rolling
后加上 _se
,那么 stata
会将每个系数的标准差以 _se
为开头存下来。
4. rolling2 命令
另外一个命令是 rolling2
。这个命令的做法其实和 rolling
是差不多的,但最大的一个不同点是,rolling
在对面板数据进行滚动回归时,会分组进行滚动回归,而 rolling2
就是混合回归。
例如,利用 help rolling2
的示例数据进行演示。
*rolling 滚动回归
webuse grunfeld , clear
rolling _b _se, window(8): ///
regress invest mvalue kstock
count
//外网无法下载时,可以访问连享会数据仓库下载
//数据地址:https://gitee.com/arlionn/data/blob/master/data01/grunfeld.dta
grunfeld.dta 是一份面板数据,共有 10 家公司,每家公司有 20 年数据,即总共 200 个观察值。当使用上述命令进行滚动回归时,每家公司会被分开分别进行滚动回归,那么总的回归次数就是 (20-8+1)*10=130
。
*rolling2 滚动回归
webuse grunfeld, clear
rolling2 _b _se, window(8) onepanel: ///
regress invest mvalue kstock
count
当使用 rolling2
的时候,它会将整个面板数据混合回归,也就是说,从整个面板数据中滚动找出 8 年的数据来回归,那么总的回归次数就是 20-8+1=13
次。
5. asreg 命令
滚动窗口回归需要大量的循环,但在运行的时候会遇到很多数据结构问题,诸如非平衡面板数据、重复值、缺失值等。而 asreg
对不同的数据结构并不会采用一种固定的方式估计,恰恰相反,它能识别出不同类别的数据集结构,并采用合适的方法。
除此之外,asreg
命令是利用 Mata
语言来完成的。因此,asreg
在数据集特别大的时候,优势非常明显,能够节约大量的时间。同时,asreg
可以将估计结果输出到现有内存中,这就减少了再去将估计结果与原数据集合并的麻烦。
语法
asreg depvar indepvars [if] [in] ///
[, window([rangevar] #) ///
recursive minimum(#) ///
by(varlist) statistics_options]
window(#)
:设定滚动窗口长度;recursive
:起始点固定,结束点和滚动窗口增长;by
:分组变量;minimum(#)
:用来回归的最小的观察值个数。
案例
. webuse grunfeld, clear
. bys company: asreg invest mvalue kstock, ///
wind(year 10) min(5)
分组估计执行完后,会自动产生一组以 _
开头的新变量:
. des _*
variable name variable label
-------------------------------------------
_Nobs No of observatons
_R2 R-squared
_adjR2 Adjusted R-squared
_b_mvalue Coefficient of mvalue
_b_kstock Coefficient of kstock
_b_cons Constant of the regression
我们也可以查看一下具体估计结果:
. list company year _Nobs _R2 _b_mv in 1/10, clean
company year _Nobs _R2 _b_mva~e
1. 1 1935 . . .
2. 1 1936 . . .
3. 1 1937 . . .
4. 1 1938 . . .
5. 1 1939 5.000 0.995 0.054
6. 1 1940 6.000 0.706 0.062
7. 1 1941 7.000 0.576 0.065
8. 1 1942 8.000 0.500 0.052
9. 1 1943 9.000 0.507 0.052
10. 1 1944 10.000 0.460 0.057
关于 asreg
更详细介绍,请参考 help asreg
。
6. 参考文献
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
Zivot, E., J. Wang. 2003, Rolling analysis of time series[C], Modeling financial time series with s-plus®, Springer, 299-346. -Link1- -Link2- StataProfessor - Rolling window regressions in Stata -Link- StataProfessor - Rolling regressions, beta, t-statistics, and SE in Stata -Link- StataProfessor - Stata Rolling command vs asreg for rolling regressions: Similarities and differences -Link-
7. 相关推文
温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。
Note:产生如下推文列表的命令为:
lianxh runby 滚动 分组 盈余, m
安装最新版lianxh
命令:ssc install lianxh, replace
专题:数据处理 滚动吧统计量!Stata数据处理 Stata数据处理:用-astile-快速创建分组 穿透财务障眼法:盈余管理指标测算及 Stata 实操 专题:Stata绘图 Stata绘图:用-bytwoway-实现快速分组绘图 专题:Stata程序 Stata:runby - 一切皆可分组计算! 专题:结果输出 sumup:快速呈现分组统计量 专题:回归分析 Stata:各类盈余管理指标估算方法 Stata: 如何检验分组回归后的组间系数差异? 残差是个宝:盈余管理、过度投资、超额收益怎么算? Stata: 获取分组回归系数的三种方式
🍓 课程推荐:2024 空间计量专题
主讲老师:范巧 (兰州大学)
课程时间:2024 年 10 月 2-4 日 (三天)
课程咨询:王老师 18903405450(微信)
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。