我有長格式的面板數據,面板變量公司id
和1986m7到2015m12之間的月度時間變量。追蹤十年Fama-MacBeth斜率係數
我想獲得Fama-MacBeth迴歸的10年Beta測試結果,並將它們存儲在一個新文件中以便日後繪製它們。
我想要從1986m7直到1996m7,1986m8直到1996m8等爲止的beta測試,最後一次從2005m12到2015m12迴歸。
我以爲我可以用rolling
命令做到這一點,但我不知道如何告訴Stata隨着時間的推移只會「滾動」,而不是id,或者如果這個命令甚至可以使用這個命令。
我的第二個想法是使用while
循環。但我不知道如何告訴Stata,在每個循環之後,它應該將局部變量提高一個月。是否有可能將本地變量保存爲日期?
也許有人知道解決我的問題的另一種方法。
另外一個解決方案將這些測試版存儲在一個新的文件中,並附加新的測試版,將不勝感激。我想把它們作爲標量存儲起來,但是我不知道如何把標量作爲一個新的變量。使用滾動命令這個問題不會是一個問題,因爲它爲我創建了一個新的變量。
我有什麼作爲到目前爲止的代碼爲滾動想法,window(120)
因爲120個月(10年)的滾動窗口:
use mydata, clear
ssc install xtfbm
xtset id date
rolling _b, clear window(120): xtfmb y x
我有什麼作爲到目前爲止的代碼爲循環理念:
ssc install xtfmb
local i = tm(1986m7)
while `i' <= tm(2005m7) {
use mydata, clear
drop if date < tm(`i')
drop if date >= tm(`i' + "1year")
xtset id date
quietly xtfmb y x
scalar x`i' = _b[x]
local i = `i' + "1month"
}
「滾動」命令的問題在於它對每個ID分別進行滾動迴歸。這不是一個fama-macbeth迴歸的想法。 fmb是兩階段迴歸,其中在第一步中,對於每個單個時間段執行橫截面迴歸。然後,在第二步中,將最終係數估計值作爲第一步係數估計值的平均值。然而,用你的'forval'循環建議它工作得很好,謝謝你的幫助。 –
感謝您的澄清和糾正。 –