楼主: jiejure
2919 5

[数据管理求助] 【Stata】宏观时间序列,如何根据累计值求当期值 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

24%

还不是VIP/贵宾

-

威望
0
论坛币
65 个
通用积分
0.0827
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
456 点
帖子
24
精华
0
在线时间
276 小时
注册时间
2019-12-15
最后登录
2023-6-2

楼主
jiejure 发表于 2020-9-23 17:17:24 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. [CODE]
  2. * Example generated by -dataex-. To install: ssc install dataex
  3. clear
  4. input str7 month double gdp
  5. "1992-03"  5262.8
  6. "1992-06"  6484.3
  7. "1992-09"  7192.6
  8. "1992-12"  8254.8
  9. "1993-03"  6834.6
  10. "1993-06"    8357
  11. "1993-09"  9385.8
  12. "1993-12" 11095.9
  13. "1994-03"  9375.1
  14. "1994-06"   11481
  15. end
复制代码

[/code]      这是中经网导出的宏观时间序列,但是只有每年的累计值,请问怎么根据累计值求当期值呢,有简单的函数/命令就能解决的么,我的想法是按照每年的reshpe成宽数据,然后生成差分项,但我感觉这样做好麻烦啊。
      另外如果已知的是当期值,求累计值很好办,就直接bysort month:gen x = sum(gdp)就行,month需要改成每年的年份。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Stata 时间序列 tata generated generate

沙发
jiejure 发表于 2020-9-23 23:26:04
我自己回答一下吧,第一个代码块是原始数据,第二个代码块是命令。
  1. [CODE]
  2. * Example generated by -dataex-. To install: ssc install dataex
  3. clear
  4. input str7 指标 double y str4 year str2 quarter str6 mon
  5. "1996-03"   14628 "1996" "q1" "1996q1"
  6. "1996-06" 31775.5 "1996" "q2" "1996q2"
  7. "1996-09" 50381.3 "1996" "q3" "1996q3"
  8. "1996-12" 71813.6 "1996" "q4" "1996q4"
  9. "1997-03" 16689.1 "1997" "q1" "1997q1"
  10. "1997-06" 35852.7 "1997" "q2" "1997q2"
  11. "1997-09" 56353.6 "1997" "q3" "1997q3"
  12. "1997-12"   79715 "1997" "q4" "1997q4"
  13. "1998-03" 18049.1 "1998" "q1" "1998q1"
  14. "1998-06" 38345.7 "1998" "q2" "1998q2"
  15. end
复制代码

[/code]

     线生成每年4个季度的计数z变量,然后求差就行了,每年第一期被差掉了补回来就行。
  1. bysort year:gen z = _n
  2. //对所有累计变量求其当期值
  3. bysort year: gen y_p = y[_n]-y[_n-1]
  4. replace y_p = y if z == 1
复制代码
不知道还有没有更简单的方法,有的话朋友们可以贴出来。

藤椅
黃河泉 在职认证  发表于 2020-9-24 09:02:43
看看这个是不是你要的:
  1. gen year = real(substr(month,1,4))
  2. bys year (month): gen t = _n
  3. xtset year t
  4. bys year: gen wanted = gdp-L.gdp
  5. replace wanted = gdp if t == 1
复制代码

板凳
jiejure 发表于 2020-9-24 10:24:17
黃河泉 发表于 2020-9-24 09:02
看看这个是不是你要的:
嗯,对的!谢谢黄老师了。

报纸
songking 发表于 2020-9-27 16:19:11
jiejure 发表于 2020-9-23 23:26
我自己回答一下吧,第一个代码块是原始数据,第二个代码块是命令。

[/code]
可以试下
gen     yd=y if ustrregexm(quarter,"q1")
replace yd=y[_n]-y[_n-1] if !ustrregexm(quarter,"q1")

地板
jiejure 发表于 2020-9-27 16:58:17
songking 发表于 2020-9-27 16:19
可以试下
gen     yd=y if ustrregexm(quarter,"q1")
replace yd=y[_n]-y[_n-1] if !ustrregexm(quarte ...
你这个很好,更简单。谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-29 12:35