楼主: 拂去尘缘
7940 15

[数据管理求助] 生成的一阶差分怎么又其缺失值? [推广有奖]

11
黃河泉 在职认证  发表于 2017-7-27 19:20:11
拂去尘缘 发表于 2017-7-27 18:19
老师您好,是这样的,其实以前也发过帖子,这是刚学会的dataex的用法,还不会把命令粘贴上,您能再次赐教 ...
dataex 是美国 Stata 论坛要求之格式,它有许多方便之处(确保你我用的资料是完全一样,特别是时间变量),不过它是印"资料"用的,你的很标准。至于指令等之呈现,可用窗口上之 <> 来完美表现!

12
黃河泉 在职认证  发表于 2017-7-27 19:21:37
拂去尘缘 发表于 2017-7-27 18:33
两位老师,您看可以先用dataid假设一个时间序列,等各个时间预测出来之后,再用tsfill把缺失的时间变量补 ...
你是要补那些没有交易资料的天数吗?若是的话,我只能说没看过人家这样做的!

13
拂去尘缘 发表于 2017-8-13 13:24:50
黃河泉 发表于 2017-7-27 19:21
你是要补那些没有交易资料的天数吗?若是的话,我只能说没看过人家这样做的!
黄老师您好,最近发的帖子太多了,由于问题暂时解决了,所以给忽视掉了,实在非常抱歉。
还是以我上边的问题来展示我的问题或者思路吧
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float dateid int date double(eurusd gbpusd audusd usdcad)
  4. 1 19724             1.3763             1.6566 .8886 1.0644
  5. 2 19725             1.3672             1.6453 .8911  1.067
  6. 3 19726             1.3589             1.6418 .8945 1.0635
  7. 4 19729             1.3629             1.6406 .8967 1.0656
  8. 5 19730             1.3616             1.6402 .8927 1.0766
  9. 6 19731             1.3576             1.6448 .8901  1.082
  10. 7 19732             1.3608             1.6481   .89 1.0842
  11. 8 19733              1.367 1.6482999999999999 .8995 1.0892
  12. 9 19736             1.3671             1.6383 .9054 1.0863
  13. 10 19737 1.3679000000000001 1.6440000000000001 .8967 1.0946
  14. 11 19738             1.3605             1.6371 .8916 1.0934
  15. 12 19739              1.362             1.6354 .8821  1.093
  16. 13 19740             1.3541 1.6423999999999999 .8781 1.0964
  17. 14 19743             1.3552             1.6429 .8811 1.0949
  18. 15 19744             1.3561             1.6477 .8806 1.0967
  19. 16 19745             1.3547             1.6575 .8852 1.1087
  20. 17 19746             1.3696             1.6637 .8768 1.1102
  21. 18 19747             1.3678             1.6482 .8683 1.1088
  22. 19 19750             1.3673             1.6585 .8739 1.1116
  23. 20 19751             1.3671 1.6579000000000002 .8779 1.1153
  24. end
  25. format %td date
复制代码
以上是数据
我进行了以下操作
  1. tsset date
  2. tsfill
复制代码
这样时间表变量就被补充上了,补充后的结果如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float dateid int date double(eurusd gbpusd audusd usdcad)
  4. 1 19724             1.3763             1.6566 .8886 1.0644
  5. 2 19725             1.3672             1.6453 .8911  1.067
  6. 3 19726             1.3589             1.6418 .8945 1.0635
  7. . 19727                  .                  .     .      .
  8. . 19728                  .                  .     .      .
  9. 4 19729             1.3629             1.6406 .8967 1.0656
  10. 5 19730             1.3616             1.6402 .8927 1.0766
  11. 6 19731             1.3576             1.6448 .8901  1.082
  12. 7 19732             1.3608             1.6481   .89 1.0842
  13. 8 19733              1.367 1.6482999999999999 .8995 1.0892
  14. . 19734                  .                  .     .      .
  15. . 19735                  .                  .     .      .
  16. 9 19736             1.3671             1.6383 .9054 1.0863
  17. 10 19737 1.3679000000000001 1.6440000000000001 .8967 1.0946
  18. 11 19738             1.3605             1.6371 .8916 1.0934
  19. 12 19739              1.362             1.6354 .8821  1.093
  20. 13 19740             1.3541 1.6423999999999999 .8781 1.0964
  21. . 19741                  .                  .     .      .
  22. . 19742                  .                  .     .      .
  23. 14 19743             1.3552             1.6429 .8811 1.0949
  24. 15 19744             1.3561             1.6477 .8806 1.0967
  25. 16 19745             1.3547             1.6575 .8852 1.1087
  26. 17 19746             1.3696             1.6637 .8768 1.1102
  27. 18 19747             1.3678             1.6482 .8683 1.1088
  28. . 19748                  .                  .     .      .
  29. . 19749                  .                  .     .      .
  30. 19 19750             1.3673             1.6585 .8739 1.1116
  31. 20 19751             1.3671 1.6579000000000002 .8779 1.1153
  32. end
  33. format %td date
复制代码
下一步操作就是生成一阶差分变量,
例如,
  1. gen deurusd=d.eurusd
复制代码
这样生成的查分变量deurusd存在缺失值
数据如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float dateid int date double eurusd float deurusd
  4. 1 19724             1.3763      .
  5. 2 19725             1.3672 -.0091
  6. 3 19726             1.3589 -.0083
  7. . 19727                  .      .
  8. . 19728                  .      .
  9. 4 19729             1.3629      .
  10. 5 19730             1.3616 -.0013
  11. 6 19731             1.3576  -.004
  12. 7 19732             1.3608  .0032
  13. 8 19733              1.367  .0062
  14. . 19734                  .      .
  15. . 19735                  .      .
  16. 9 19736             1.3671      .
  17. 10 19737 1.3679000000000001  .0008
  18. 11 19738             1.3605 -.0074
  19. 12 19739              1.362  .0015
  20. 13 19740             1.3541 -.0079
  21. . 19741                  .      .
  22. . 19742                  .      .
  23. 14 19743             1.3552      .
  24. 15 19744             1.3561  .0009
  25. 16 19745             1.3547 -.0014
  26. 17 19746             1.3696  .0149
  27. 18 19747             1.3678 -.0018
  28. . 19748                  .      .
  29. . 19749                  .      .
  30. 19 19750             1.3673      .
  31. 20 19751             1.3671 -.0002
  32. end
  33. format %td date
复制代码
参考您的建议和蓝版主的建议是使用生成timeid的方法来处理
针对,最开始的数据,进行具体处理过程如下:
  1. gen timeid = _n
  2. tsset timeid
  3. gen deurusd=d.eurusd
  4. dataex dateid date eurusd deurusd
复制代码
这样生成的数据就是如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input float dateid int date double eurusd float deurusd
  4. 1 19724             1.3763      .
  5. 2 19725             1.3672 -.0091
  6. 3 19726             1.3589 -.0083
  7. 4 19729             1.3629   .004
  8. 5 19730             1.3616 -.0013
  9. 6 19731             1.3576  -.004
  10. 7 19732             1.3608  .0032
  11. 8 19733              1.367  .0062
  12. 9 19736             1.3671  .0001
  13. 10 19737 1.3679000000000001  .0008
  14. 11 19738             1.3605 -.0074
  15. 12 19739              1.362  .0015
  16. 13 19740             1.3541 -.0079
  17. 14 19743             1.3552  .0011
  18. 15 19744             1.3561  .0009
  19. 16 19745             1.3547 -.0014
  20. 17 19746             1.3696  .0149
  21. 18 19747             1.3678 -.0018
  22. 19 19750             1.3673 -.0005
  23. 20 19751             1.3671 -.0002
  24. end
  25. format %td date
复制代码
这样的话,一阶差分就不存在缺失值
然后我用这样的数据进行分析。
比方说,我用的VAR模型进行预测,预测结果出来之后,重新设定时间变量,将date设置成时间变量
之后再使用tsfill补充上缺失的时间变量值,这样展示的预测结果和时间对应?您认为这样可以吗?
除了这样之外,我还存在一个问题就是,如果使用tsfill将时间变量补上之后,其它变量都是缺失值.,直接进行时间序列分析,会不会影响分析?还是忽略掉了缺失值?
多谢黄老师

14
黃河泉 在职认证  发表于 2017-8-13 14:59:56
拂去尘缘 发表于 2017-8-13 13:24
黄老师您好,最近发的帖子太多了,由于问题暂时解决了,所以给忽视掉了,实在非常抱歉。
还是以我上边的 ...
这个是"交易日"的概念,所以用后者较适合(不要用 tsfill)!

15
拂去尘缘 发表于 2017-8-13 17:12:38
黃河泉 发表于 2017-8-13 14:59
这个是"交易日"的概念,所以用后者较适合(不要用 tsfill)!
恩恩,谢谢黄老师

16
墨离墨弃 发表于 2019-1-10 16:10:12
如果是间隔年份怎么做一阶差分啊?

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

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