楼主: 拂去尘缘
2879 10

[编程问题求助] 使用循环回归,既不报错,也不出回归结果 [推广有奖]

  • 0关注
  • 3粉丝

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
8031 个
通用积分
77.9384
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
14147 点
帖子
387
精华
0
在线时间
1204 小时
注册时间
2016-4-16
最后登录
2024-4-3

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,使用循环回归,求助!
数据如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input int timeid float(dgbpusd daudusd deurusd)
  4.   1      .      .      .
  5.   2 -.0113  .0025 -.0091
  6.   3 -.0035  .0034 -.0083
  7.   4 -.0012  .0022   .004
  8.   5 -.0004  -.004 -.0013
  9.   6  .0046 -.0026  -.004
  10.   7  .0033 -.0001  .0032
  11.   8  .0002  .0095  .0062
  12.   9   -.01  .0059  .0001
  13. 10  .0057 -.0087  .0008
  14. 11 -.0069 -.0051 -.0074
  15. 12 -.0017 -.0095  .0015
  16. 13   .007  -.004 -.0079
  17. 14  .0005   .003  .0011
  18. 15  .0048 -.0005  .0009
  19. 16  .0098  .0046 -.0014
  20. 17  .0062 -.0084  .0149
  21. 18 -.0155 -.0085 -.0018
  22. 19  .0103  .0056 -.0005
  23. 20 -.0006   .004 -.0002
  24. 21 -.0016  -.004 -.0008
  25. 22 -.0078  .0055 -.0108
  26. 23 -.0046 -.0038 -.0069
  27. 24 -.0134 -.0003  .0039
  28. 25   .002  .0172 -.0006
  29. 26 -.0016 -.0015  .0014
  30. 27  .0013  .0049  .0057
  31. 28  .0089      0  .0045
  32. 29 -.0008  -.001  .0011
  33. 30  .0047  .0089 -.0008
  34. 31  .0146 -.0011 -.0045
  35. 32  .0063 -.0048  .0088
  36. 33  .0088  .0055  .0012
  37. 34 -.0033 -.0002  .0014
  38. 35  -.003 -.0005  .0052
  39. 36 -.0004 -.0027 -.0026
  40. 37 -.0029  .0007 -.0014
  41. 38 -.0035  -.003  .0027
  42. 39   .004  .0058 -.0011
  43. 40  .0025 -.0016   .001
  44. 41  -.001 -.0051 -.0058
  45. 42  .0017 -.0003  .0023
  46. 43  .0057 -.0041  .0092
  47. 44 -.0078  .0014 -.0067
  48. 45 -.0003  .0012  .0008
  49. 46  .0058  .0035  -.001
  50. 47  .0018  .0105  .0128
  51. 48 -.0027 -.0022  .0014
  52. 49 -.0068 -.0048  .0002
  53. 50 -.0028 -.0043 -.0017
  54. 51  .0002  .0011  .0043
  55. 52  .0005  .0043 -.0035
  56. 53  .0023 -.0003  .0046
  57. 54  -.001  .0059  .0008
  58. 55 -.0044   .004  .0012
  59. 56 -.0052 -.0085 -.0101
  60. 57 -.0037 -.0003 -.0054
  61. 58 -.0018  .0042  .0015
  62. 59  .0012  .0052  .0045
  63. 60  .0031  .0033 -.0013
  64. 61  .0054   .006 -.0045
  65. 62  .0028  .0033 -.0041
  66. 63  .0027 -.0012  .0012
  67. 64  .0024  .0017  .0017
  68. 65 -.0032 -.0017  .0024
  69. 66 -.0004  .0001 -.0026
  70. 67 -.0028 -.0016 -.0047
  71. 68 -.0023   .006 -.0015
  72. 69  .0033 -.0022  .0037
  73. 70  .0139   .009  .0055
  74. 71  .0046  .0031  .0058
  75. 72 -.0008  .0022  .0031
  76. 73 -.0052 -.0016 -.0001
  77. 74 -.0004  .0027 -.0064
  78. 75  .0001 -.0062 -.0006
  79. 76  .0067  .0009  .0001
  80. 77 -.0003 -.0041 -.0002
  81. 78      0  .0003 -.0001
  82. 79 -.0002 -.0005  -.002
  83. 80  .0032  .0039  .0012
  84. 81 -.0042 -.0076  .0012
  85. 82   .002 -.0027  .0014
  86. 83  .0001  .0017  .0003
  87. 84  .0004 -.0023  .0017
  88. 85   .002   .001 -.0039
  89. 86  .0046  .0019  .0055
  90. 87   .002 -.0013  .0003
  91. 88 -.0023  .0003 -.0001
  92. 89 -.0004 -.0003  .0006
  93. 90  .0109  .0077  .0053
  94. 91 -.0023 -.0024 -.0018
  95. 92  -.002  .0048  -.007
  96. 93 -.0081 -.0013 -.0082
  97. 94  .0017      0 -.0001
  98. 95 -.0042 -.0002 -.0053
  99. 96 -.0059  .0018  .0011
  100. 97  .0023 -.0022 -.0005
  101. 98  .0021  .0004 -.0016
  102. 99  .0003  -.003  .0015
  103. 100  .0024 -.0087 -.0007
  104. end
复制代码

程序如下:
  1. foreach y of var dgbpusd daudusd deurusd {
  2.     foreach x of var dgbpusd daudusd deurusd {
  3.         if `y'  != `x' {
  4.             reg `y' `x', noheader
  5.         }
  6.     }
  7. }
复制代码

既不报错,也不出回归结果。
而何其几乎一模一样的程序则可以运行,如下所示:
  1. sysuse auto, clear
  2. foreach y of var price mpg rep78 {
  3. foreach x of var price mpg rep78 {
  4. if `x'  != `y' {
  5.   reg `y' `x'

  6. }
  7. }
  8. }
复制代码

求指教是什么原因!!!
多谢多谢!

二维码

扫码加我 拉你入群

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

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

关键词:回归结果 generated generate foreach install

回帖推荐

deem 发表于6楼  查看完整内容

你把自己的数据第一行去掉,也可以得到结果。但是逻辑是错的。 变量存的值是对应变量第一行观测的值,如果你的第一行所有变量值不为缺失且值互不相等,也能得到你要的结果。但是if `x' != `y'其实是在判断变量x和变量y第一个观测值是否相等。你需要做的应该是判断变量名称是否相等,即if "`x'" != "`y'"
沙发
deem 学生认证  发表于 2017-8-18 14:09:40 |只看作者 |坛友微信交流群
加上引号
  1. foreach y of var dgbpusd daudusd deurusd {
  2.     foreach x of var dgbpusd daudusd deurusd {
  3.         if "`y'"  != "`x'" {
  4.             reg `y' `x', noheader
  5.         }
  6.     }
  7. }
复制代码

使用道具

藤椅
拂去尘缘 发表于 2017-8-18 14:15:26 |只看作者 |坛友微信交流群
deem 发表于 2017-8-18 14:09
加上引号
非常非常感谢,按照你这样操作就成功了,但是为什么
  1. sysuse auto, clear
  2. foreach y of var price mpg rep78 {
  3. foreach x of var price mpg rep78 {
  4. if `x'  != `y' {
  5.   reg `y' `x'
  6. }
  7. }
  8. }
复制代码
也可以?上边这段中的
  1. if `y' != `x'
复制代码
并没有加引号,您能解释一下为什么吗?多谢

使用道具

板凳
deem 学生认证  发表于 2017-8-18 14:36:56 |只看作者 |坛友微信交流群
拂去尘缘 发表于 2017-8-18 14:15
非常非常感谢,按照你这样操作就成功了,但是为什么也可以?上边这段中的并没有加引号,您能解释一下为什 ...
`x'是变量,"`x'"是一个字符串,字符串的值是变量名

使用道具

报纸
拂去尘缘 发表于 2017-8-18 14:42:39 |只看作者 |坛友微信交流群
deem 发表于 2017-8-18 14:36
`x'是变量,"`x'"是一个字符串,字符串的值是变量名
非常感谢您的解答,但是我还是不明白为什么借助系统数据auto.dta那个例子上的没加引号就可以

使用道具

地板
deem 学生认证  发表于 2017-8-18 14:50:27 |只看作者 |坛友微信交流群
拂去尘缘 发表于 2017-8-18 14:42
非常感谢您的解答,但是我还是不明白为什么借助系统数据auto.dta那个例子上的没加引号就可以
你把自己的数据第一行去掉,也可以得到结果。但是逻辑是错的。
变量存的值是对应变量第一行观测的值,如果你的第一行所有变量值不为缺失且值互不相等,也能得到你要的结果。但是if `x'  != `y'其实是在判断变量x和变量y第一个观测值是否相等。你需要做的应该是判断变量名称是否相等,即if "`x'"  != "`y'"

使用道具

7
拂去尘缘 发表于 2017-8-18 15:05:23 |只看作者 |坛友微信交流群
deem 发表于 2017-8-18 14:50
你把自己的数据第一行去掉,也可以得到结果。但是逻辑是错的。
变量存的值是对应变量第一行观测的值,如 ...
[em17][em17]非常非常感谢

使用道具

8
拂去尘缘 发表于 2017-8-18 15:09:10 |只看作者 |坛友微信交流群
拂去尘缘 发表于 2017-8-18 15:05
非常非常感谢
再补充一个问题,为什么不报错呢?

使用道具

9
蓝色 发表于 2017-8-18 20:02:59 |只看作者 |坛友微信交流群
没有错误
当然不报错
你的第一行数据都是缺失的,就是相等,所以不执行后面的语句

使用道具

10
拂去尘缘 发表于 2017-8-21 09:13:07 |只看作者 |坛友微信交流群
蓝色 发表于 2017-8-18 20:02
没有错误
当然不报错
你的第一行数据都是缺失的,就是相等,所以不执行后面的语句
谢谢,蓝版主,我觉得楼上的讲的很详细[em17][em17]

使用道具

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

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 17:29