Stata:滾動回歸的五個命令-rolling

2021-02-14 Stata連享會

🍎 連享會主頁:lianxh.cn

New! lianxh 命令發布了:   GIF 動圖介紹
隨時搜索 Stata 推文、教程、手冊、論壇,安裝命令如下:
  . ssc install lianxh

連享會 · 最受歡迎的課


🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4

🌲 主講:連玉君 (中山大學);江艇 (中國人民大學)

👉 課程主頁:https://gitee.com/arlionn/PX

作者:王俊 (中山大學)
郵箱: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) ]

當然,在回歸之前,必須要使用 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]

recursive:起始點固定,結束點和滾動窗口增長;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數據處理:用-astile-快速創建分組穿透財務障眼法:盈餘管理指標測算及 Stata 實操Stata繪圖:用-bytwoway-實現快速分組繪圖

連享會 · 最受歡迎的課


🍓 2021 Stata 寒假班
⌚ 2021 年 1.25-2.4

🌲 主講:連玉君 (中山大學);江艇 (中國人民大學)

👉 課程主頁:https://gitee.com/arlionn/PX

🍏 🍏 🍏 🍏
連享會主頁:🍎 www.lianxh.cn
直播視頻:lianxh.duanshu.com

免費公開課:

直擊面板數據模型:https://gitee.com/arlionn/PanelData - 連玉君,時長:1小時40分鐘Stata 33 講:https://gitee.com/arlionn/stata101 - 連玉君, 每講 15 分鐘.Stata 小白的取經之路:https://gitee.com/arlionn/StataBin - 龍志能, 2 小時部分直播課課程資料下載 👉 https://gitee.com/arlionn/Live (PPT,dofiles等)

溫馨提示: 文中連結在微信中無法生效,請點擊底部「閱讀原文」。

關於我們🍎 連享會 ( 主頁:lianxh.cn ) 由中山大學連玉君老師團隊創辦,定期分享實證分析經驗。👉 直達連享會:百度一下:連享會】即可直達連享會主頁。亦可進一步添加 主頁,知乎,面板數據,研究設計 等關鍵詞細化搜索。New! lianxh 命令發布了: 在 Stata 命令窗口中輸入 ssc install lianxh 即可安裝,隨時搜索連享會推文、Stata 資源,詳情:help lianxh。連享會主頁  lianxh.cn

🎦  連享會小程序:掃一掃,看推文,看視頻……

🍉 掃碼加入連享會微信群,提問交流更方便

🍅 連享會學習群-常見問題解答匯總:
👉  https://gitee.com/arlionn/WD

New! lianxh 命令發布了:    GIF 動圖介紹
隨時搜索連享會推文、Stata 資源,安裝命令如下:
  . ssc install lianxh
使用詳情參見幫助文件 (有驚喜):
  . help lianxh

相關焦點

  • 學術小渣 Stata常用命令
    大學期間覺得學的最有用的軟體之一就是stata了,對stata基本是在血和淚的嘗試中爬過,到了最後基本屬於只要stata不出現紅字錯誤命令就開心得不得了。順便整理一下常用的stata命令如下,應該對付計量方向第一學期的入門問題不大(求stata大神不虐..),所以就只寫了一部分常用的,有時間後面再補充吧。
  • 滾動計算:rangerun和rangestat命令簡介
    簡介2. rangerun 命令2.1 語法格式2.2 與 `rangestat` 對比2.3 與 `rolling` 對比2.4 與 `statsby` 對比2.5 與循環觀察值對比2.6 滾動窗口上的加權回歸3. rangestat 命令3.1 語法格式3.2
  • Stata:斷點回歸分析教程
    >斷點回歸的基本命令是rd,首先我們輸入如下命令進行安裝,下載安裝方法為:rd y d x, z0 (real) strineq mbw (numlist) graph bdep oxline kernel (rectangle) cov (varlist) x(varlist)語法含義為:其中mbw(numlist
  • 一文收藏stata14&15小抄:常用命令匯總
    Basic stata command 本節主要對stata一些基礎命令例如導入導出和描述性分析以及創建新變量進行學習。圖1.4 stata命令語法格式圖1.9  創建新變量 命令gene2   stata數據轉換 Data Transformation本節主要對stata
  • stata常用命令集
    【收藏】stata官方的範例數據sample 50 在觀測案例中隨機選取50%的樣本,其餘刪除 sample 50,count 在觀測案例中隨機選取50個樣本,其餘刪除 browse x1 x2 if x3>3 (按所列變量與條件打開數據查看器)edit x1 x2 if x3>3 (按所列變量與條件打開數據編輯器
  • stata常見命令分享(下)
    前幾日小編結合自己做數據的經歷給大家總結分享了stata常用命令分享(上)今天就繼續給大家分享哦~>上回我們講到將excel表格中的數據導入stata隨後可以進行一些簡單操作以實現我們的小心思那麼一頓操作猛如虎之後或許你想給變量換個名字那麼請輸入
  • Stata+R:門檻回歸教程
    漢森(Bruce E.命令裡面的自舉抽樣次數,即表示網格搜索數量trimn:Vector of trimmed percentage,修整比例,根據門檻個數來確定,具體請看下面案例,1 2 3個門檻時候該選項不一致,請看案例qn:Number of quantiles to examine,門限變量分割的分割點位數,一般默認為100,conf_lev
  • stata 常用命令
    �stata 常用命令� 調整變量格式:formatx1%10.3f
  • 【重發】面板門檻模型-stata命令xthreg介紹
    如果模型的研究對象包含多個個體、多個年度,那麼就是面板門檻模型。    目前,Stata14沒有官方命令可以估計門檻模型或者面板門檻模型,最新的Stata15加入了估計門檻模型的功能,但依然不能估計面板門檻模型。所以,一般我們還是藉助外部命令,在Stata14版本下估計面板門檻模型。一、命令介紹目前面板門限回歸有兩個命令。
  • Stata數據處理:各種求和方式一覽
    tscollap() 命令也可以實現上述功能 (注意,在使用tscollap 命令之前,需要將數據定義為面板數據),但其新生成的數據無需再 tsset。lutkepohl2.dtause lutkepohl2.dta, clear gen year = year(dofq(qtr)) // 從qtr這個數據中提取出年份list qtr inv inc consump in 1/4, clean noobscollapse(sum) inv inc consump, by(year) //按照年份加總inv,inc,和comsump三個變量
  • Stata: 如何檢驗分組回歸後的組間係數差異?
    下面使用我在stata初級班講座 (連玉君課程)中的例子,列舉幾種方法。調入 stata 自帶的數據集 nlsw88.dta。結果:從統計意義上來看,答案顯然沒有那麼明確(小學五年級的小朋友會覺得這根本不是個問題!)。對而言,若把注意力放在 married 這個變量上,或許更容易判斷二者的差異是否顯著。
  • 數據清理思路及Stata命令
    例如,如果原始數據中變量標籤為中文,用stata14打開時,變量標籤無法識別。此時,需要設定編碼類型。命令為 Unicodeencoding set gb18030,即設定編碼類型為國標18030,即簡體中文。
  • 教師節傾情巨獻 |最全STATA 常用命令集
    經過小編努力,為大家分享stata常用命令,抓緊時間收藏,拿走不謝。同時祝願朋友們,節日快樂!one-to-one merge:數據源自stata tutorial中的exampw1和exampw2 第一步:將exampw1按v001~v003這三個編碼排序,並建立臨時資料庫tempw1 clear use "t:\statatut\exampw1.dta" su ——summarize的簡寫sort
  • 門限回歸Stata操作匯總與空間門檻回歸模型簡介
    所以本文在此講解面板門限回歸的問題,門限回歸也適用於時間序列(文章後面將介紹stata15.0新命令進行時間序列的門限回歸)。門限效應,是指當一個經濟參數達到特定的數值後,引起另外一個經濟參數發生突然轉向其它發展形式的現象(結構突變)。作為原因現象的臨界值稱為門限值。
  • 零基礎的同學如何用stata做一元線性回歸模型?
    stata軟體越來越受研究生的喜歡,很多研究生在做統計研究、學術分析的時候,也多選用此軟體。網上有關stata的教程有很多,但對於沒有基礎的同學來說,學起來稍微就有些吃力了。那麼,零基礎的同學應該如何學習呢?如何用stata做出滿意的一元線性回歸模型呢 ?
  • 再談斷點回歸 (RDD):命令rdrobust、 rdbwselect、rdplot及Stata實現
    基於最新中國健康與養老追蹤調查(CHARLS)的微觀數據,本文利用斷點回歸方法實證研究了以「新農保」為基礎的農村「社會養老」模式對「家庭養老」的替代性。研究結果顯示,獲得新農保養老金收入的農村老年人,其獲得私人轉移支付的概率下降了大約32——56個百分點,然而,對於已經獲得轉移支付的老年人,並未發現新農保養老金收入對他們獲得的私人轉移支付數額存在顯著影響。
  • stata系列命令初探——ttest
    有人寵愛,才可以肆無忌憚的當個笨小孩對於95後來說,的確是很尷尬了十分成熟談不上,絕對幼稚又不被允許想要改變,卻不能華麗的轉身>試圖頹廢,又找不到退縮的理由往前一步,要死要活停在原地,坐以待斃那就不要多想了,去做自己覺得該做的事情今天繼續分享新的stata命令ttest,
  • RDD: 斷點回歸命令rdrobust(附rdbwselect、rdplot)及Stata實現
    斷點回歸的基本命令是rd,另外,還有一些其他命令,例如rdrobust、rdlocrand、rddensity等等。本文主要介紹rdrobust。下載安裝方法為:net install rdrobust , from ( http : //www-personal.umich.edu/~cattaneo/rdrobust)net install rdrobust,from(htp:// www-personal umich. edu/cattaneo/software/rdrobust/stata
  • STATA學習總結(4):回歸及釋義
    >是多分類變量時,需要將其變成(n-1)個(0,1)虛擬變量。 X是多分類變量在stata中的回歸實現,Xi:reg var1 var2 var3 i.var4其中,var4為多分類變量,var1,var2,var3為連續性變量或者二分類變量。 變量的非線性轉化,如年齡對收入的影響並不是簡單的線性關係,為了擬合這種曲線關係,我們往往對age進行二次方處理。
  • 人生苦短,我學stata
    為了幫助大家全面系統的掌握stata,我們在一貫堅持高水平授課辦會的基礎上,特別打造「小班教學、理論與軟體並重、精品課程解析」的課程培訓亮點,現推出2021年高級計量及Stata應用研討班!截至目前,計量經濟學服務中心已經在西安、北京、上海、廣州等地成功舉辦了15場stata高級班,並在深圳南方科技大學舉辦了一場stata編程研討班。