楼主: 笨笨兔
40527 23

[编程问题求助] stata中如何在时间序列数据中求得连续5年的标准差? [推广有奖]

11
fupingzlg 学生认证  发表于 2018-11-14 21:16:32
为什么版主发的两个方法计算出来的结果不一致呢?和手动计算的结果貌似也不太一致,不知道是不是自己计算错了。版主有测试过嘛?

12
fupingzlg 学生认证  发表于 2018-11-14 21:40:00
cap drop vc*
  cap drop n
  bys stkcd:gen n=_n
  bys stkcd:gen N=_N
  qui sum N,d
  local N=r(max)
  forval i=5/`N'{
    bys stkcd:egen vc`i' = sd(sales) if n<=`i'&n>=`i'-4
    replace vc`i'=0 if vc`i'==.
    replace vc`i'=0 if n<`i'
  }
  egen sd = rowtotal(vc*)
  drop vc*
  replace sd=. if sd==0
  label var sd "前向四年标准差"

自己编写的,和手工计算的比较一致。但是遇到几百期的,就计算很慢了。

13
黃河泉 在职认证  发表于 2018-11-15 11:17:35
fupingzlg 发表于 2018-11-14 21:40
cap drop vc*
  cap drop n
  bys stkcd:gen n=_n
请试试 (先 ssc install rangestat)
  1. webuse grunfeld, clear
  2. rangestat (sd) invest (count) invest, interval(year -4 0) by(company)
  3. replace invest_sd = . if invest_count < 5
复制代码

14
fupingzlg 学生认证  发表于 2018-12-6 13:09:43
黃河泉 发表于 2018-11-15 11:17
请试试 (先 ssc install rangestat)
感谢朋友,这个命令确实很强大。

15
黃河泉 在职认证  发表于 2018-12-6 14:39:16
fupingzlg 发表于 2018-12-6 13:09
感谢朋友,这个命令确实很强大。
Exactly.

16
Binglingg 发表于 2019-3-30 20:26:40
黄老师,请教一下环境不确定性应该如何做:
关于环境不确定的衡量,根据申慧慧老师的文章介绍,EU为环境不确定性指标,环境不确定性的算法如下:即每个公司运用过去5年的数据,采用普通最小二乘法(OLS)运行如下模型(2),分别估计过去5年的非正常销售收入: “Sale= Φ0+Φ1Year + ε中,Sale为销售收入;Year为年度变量,如果观测值是过去第4年的,则Year=1;如果观测值是过去第3年的,则Year=2;依次类推,如果观测值是当前年度的,则Year= 5。模型(2)的残差即为非正常销售收入;计算公司过去5年非正常销售收入的标准差,再除以过去5年销售收入的平均值,从而得到未经行业调整的环境不确定性;同一年度同一行业内所有公司的未经行业调整的环境不确定性的中位数,即为行业环境不确定性(IEU),采用GhoshandOlsen(2009)的方法,各公司未经行业调整的环境不确定性除以行业环境不确定性,即为公司经行业调整后的环境不确定性,也就是本文所运用的环境不确定性(HEU)。
想请问一下如果用的是2008-2017年的数据,想要计算出2012-2017年的环境不确定性指标应该怎么做呢?数据附在附件中,下面是我看到的别人写的代码,不知道如何应用到自己的研究中,恳请老师指导!
gen msale=.
gen dev=.
forvalues i = 2006(1)2011{
          forvalues j = 1(1)2{
                  gen YEAR= year-`i'
                  qui reg sale YEAR if YEAR <6 &YEAR>0 & stkcd ==`j'
                  qui predict p if YEAR<6 & YEAR>0& stkcd ==`j',r
                  
                  qui sum p if stkcd==`j',de
                  qui dis "i=`i' j=`j'"
                  qui replace dev=r(sd) if stkcd==`j' & YEAR==5
                  qui sum sale if stkcd==`j' & YEAR<6 & YEAR>0 ,de
          qui replace  msale=r(mean) if stkcd==`j' & YEAR==5
                  
                  drop YEAR p  
        
                  }
}
dis "loop is over"
gen eu=dev/msale

17
Binglingg 发表于 2019-3-30 20:27:14
Binglingg 发表于 2019-3-30 20:26
黄老师,请教一下环境不确定性应该如何做:
关于环境不确定的衡量,根据申慧慧老师的文章介绍,EU为环境不 ...
期待老师的答复!

18
黃河泉 在职认证  发表于 2019-3-31 07:06:50
Binglingg 发表于 2019-3-30 20:27
期待老师的答复!
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并见说明),将原始 Stata 资料中具有”代表性”的一部分资料列出,以供有意回答者实验之用,并能提供具体操作指令。
2.        请参考说明 https://bbs.pinggu.org/thread-5048204-1-1.html

19
Binglingg 发表于 2019-3-31 16:08:05
黃河泉 发表于 2019-3-31 07:06
你若要问程序,永远附上相关资料;若附上资料,永远用 dataex 印出资料。
1.        先 ssc install dataex (并 ...
好的黄老师,我用如下代码产生了如下结果,显示无观测值,恳请老师和各位指导:
  1. . gen msale=.
  2. (8,990 missing values generated)

  3. . gen dev=.
  4. (8,990 missing values generated)

  5. . forvalues i = 2007(1)2012{
  6.   2.           forvalues j = 1(1)2{
  7.   3.                   gen YEAR= year-`i'
  8.   4.                   qui reg sale YEAR if YEAR <6 &YEAR>0 & stkcd ==`j'
  9.   5.                   qui predict p if YEAR<6 & YEAR>0& stkcd ==`j',r
  10.   6.                  
  11. .                   qui sum p if stkcd==`j',de
  12.   7.                   qui dis "i=`i' j=`j'"
  13.   8.                   qui replace dev=r(sd) if stkcd==`j' & YEAR==5
  14.   9.                   qui sum sale if stkcd==`j' & YEAR<6 & YEAR>0 ,de
  15. 10.           qui replace  msale=r(mean) if stkcd==`j' & YEAR==5
  16. 11.                 }
  17. 12. drop YEAR p               
  18. 13.      }
  19. no observations
  20. r(2000);

  21. end of do-file

  22. r(2000);
复制代码
结果如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input long stkcd int year double sale float(msale dev)
  4. 2 2008 40991779215 . .
  5. 2 2009 48881013143 . .
  6. 2 2010 50713851443 . .
  7. 2 2011 71782749801 . .
  8. 2 2012 1.03116e+11 . .
  9. 2 2013 1.35419e+11 . .
  10. 2 2014 1.46388e+11 . .
  11. 2 2015 1.95549e+11 . .
  12. 2 2016 2.40477e+11 . .
  13. 2 2017 2.42897e+11 . .
  14. 4 2008 43314824.87 . .
  15. 4 2009 60080600.35 . .
  16. 4 2010 131331494.7 . .
  17. 4 2011 74503718.53 . .
  18. 4 2012 97363301.61 . .
  19. 4 2013 72784567.16 . .
  20. 4 2014    80608820 . .
  21. 4 2015 120454422.5 . .
  22. 4 2016 287670026.6 . .
  23. 4 2017   138605842 . .
  24. 5 2008 108720264.8 . .
  25. 5 2009 43192476.48 . .
  26. 5 2010 137234232.9 . .
  27. 5 2011 63534839.01 . .
  28. 5 2012 99421227.75 . .
  29. 5 2013 52061702.69 . .
  30. 5 2014 52776994.29 . .
  31. 5 2015 84125970.69 . .
  32. 5 2016 481863433.3 . .
  33. 5 2017 530922230.5 . .
  34. 8 2008 11431908.76 . .
  35. 8 2009 10092477.19 . .
  36. 8 2010 10436780.04 . .
  37. 8 2011 13980842.19 . .
  38. 8 2012 331480790.3 . .
  39. 8 2013 304448210.7 . .
  40. 8 2014 307181306.8 . .
  41. 8 2015  1295076096 . .
  42. 8 2016  1876006502 . .
  43. 8 2017  2330932161 . .
  44. 9 2008  2892235677 . .
  45. 9 2009  3269389382 . .
  46. 9 2010  3216777167 . .
  47. 9 2011  4065255660 . .
  48. 9 2012  4024590407 . .
  49. 9 2013  4155024014 . .
  50. 9 2014  4311476904 . .
  51. 9 2015  4865351412 . .
  52. 9 2016  6411749425 . .
  53. 9 2017  7023511217 . .
  54. 10 2008   120215889 . .
  55. 10 2009 146852497.6 . .
  56. 10 2010 151867806.3 . .
  57. 10 2011 184058441.1 . .
  58. 10 2012 188168272.3 . .
  59. 10 2013 362384421.8 . .
  60. 10 2014 230299675.4 . .
  61. 10 2015 957379300.7 . .
  62. 10 2016  1053529410 . .
  63. 10 2017 757885725.5 . .
  64. 11 2008 623465139.6 . .
  65. 11 2009 845366939.7 . .
  66. 11 2010 993175350.4 . .
  67. 11 2011  1408565307 . .
  68. 11 2012  1861298831 . .
  69. 11 2013  1619227228 . .
  70. 11 2014  1268451452 . .
  71. 11 2015  1077418501 . .
  72. 11 2016  2059204077 . .
  73. 11 2017  2904690691 . .
  74. 12 2008  4273375853 . .
  75. 12 2009  5279100133 . .
  76. 12 2010  7743941694 . .
  77. 12 2011  8270731730 . .
  78. 12 2012  6994358029 . .
  79. 12 2013  7733796114 . .
  80. 12 2014  7044502645 . .
  81. 12 2015  7430889111 . .
  82. 12 2016  8974083407 . .
  83. 12 2017 10879400746 . .
  84. 14 2008 312132092.2 . .
  85. 14 2009 693897549.2 . .
  86. 14 2010 735195751.5 . .
  87. 14 2011 399837689.4 . .
  88. 14 2012 421309533.9 . .
  89. 14 2013 563950315.7 . .
  90. 14 2014 511815321.4 . .
  91. 14 2015 413213720.9 . .
  92. 14 2016 620757228.9 . .
  93. 14 2017 513141023.4 . .
  94. 16 2008 12205292228 . .
  95. 16 2009 13259033592 . .
  96. 16 2010 17111454066 . .
  97. 16 2011 16217619883 . .
  98. 16 2012 18337861657 . .
  99. 16 2013 20006736879 . .
  100. 16 2014 19423488994 . .
  101. 16 2015 18395177036 . .
  102. 16 2016 20299348136 . .
  103. 16 2017 31227763250 . .
  104. end
复制代码

20
黃河泉 在职认证  发表于 2019-3-31 16:33:37
Binglingg 发表于 2019-3-31 16:08
好的黄老师,我用如下代码产生了如下结果,显示无观测值,恳请老师和各位指导:结果如下:
老实说,我看不太懂你的说明,我先去问问第一步的 rolling regression 如何做 (稍微跟一般的不一样)?

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

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