楼主: h52101019
2458 5

[求助] SAS regression的程序編碼 [推广有奖]

  • 0关注
  • 0粉丝

大专生

5%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
166 点
帖子
27
精华
0
在线时间
46 小时
注册时间
2009-9-30
最后登录
2019-2-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的data是
gvkeyyearquarterv1v2v3v4v5

1

1992

1

213

32

67

678

45

1

1992

2

546

87

87

123

3

1

1992

3

345

756

7567

235

123

1

1992

4

47

867

6

346

4

1

1993

1

6

6

546

547

3456

1

1993

2

546

234

346

679

546

1

1993

3

7547

5

5467

678

567

1

1993

4

54

346

567

56

679

1

1994

1

123

568

678

546

78078

1

1994

2

65

346

567

5687

978

1

1994

3

867

789

67

679

9

1

1994

4

6

346

6

78

967

1

1995

1

867

47

345

9677

856

1

1995

2

978

235

234

545

754

1

1995

3

967

1234

26

234

5

2

1992

2

8

56

8

1234

34

2

1992

3

78

34669

56

346

5

2

1992

4

0

54235

547

568

2345

2

1993

1

68

47

568

67

346

2

1993

2

54

346

89

978

547

2

1993

3

65

58

78

78

68

2

1993

4

7

57

56

967

67

2

1994

1

679

36

34

854

8567

2

1994

2

547

56

6457

65

342

3

1993

1

569

9

786

756

756

3

1993

2

80

7

7876

967

856

3

1993

3

689

579

56

56

78

3

1993

4

78

2352

76

754

568

3

1994

1

568

57

78

65

7

3

1994

2

7

54

767

8

867

3

1994

3

856

5465

435

7

867

3

1994

4

967

76

456

568

856

3

1995

1

856

7

546

678

54

3

1995

2

97

78

5678

978

634

3

1995

3

67

3

568

967

654

3

1995

4

568

434

7

867

654

3

1996

1

8967

6

856

867

7

3

1996

2

967

578

856

456745

568

3

1996

3

978

58

87

36

5687



我得run出兩個model:
model 1: v1~v2+v2
model 2: v1~v2+v3+v4+v5

重點是:
1. model是run repeadly by gvkey
2. 每一次的regression只能有12個數據,也就是說,
第一次的regression只有1-12的數據,第二次的regression是2-13的數據,以此類推。

而我需要的output就會像是:
gvkeyyearquarterr2_model_1r2_model_2

1

1994

4

xxxxxx這個是gvkey 1的第12個數據

1

1995

1

xxxxxx第13個數據

1

1995

2

xxxxxx以此類推

1

1995

3

xxxxxxgvkey 2因為數據不足12個,所以沒有output

3

1995

4

xxxxxx

3

1996

1

xxxxxx

3

1996

2

xxxxxx

3

1996

3

xxxxxx


其中,
r2_model_1和r2_model_2依序是model 1與model2的R-squared的數值。

求請各位幫忙解惑,拜託了!感謝!
二维码

扫码加我 拉你入群

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

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

关键词:regression regressio regress REG ESS 程序

回帖推荐

jingju11 发表于4楼  查看完整内容

indeed.非常好的程序. 这是我的程序.为什么我选择这样的程序呢? 当然不时因为和以上的程序不一样. 原因是它给出一个非常清晰的LOG 窗口展示.程序良好的解析使得运行过程一目了然. 当然前提是保持好的效率.但是,很显然,使用宏和程序运行效率并不是一个概念.更多的宏程序的运行效率非常低下.因为较好的效率往往来源于对SAS运行的良好理解从而导致的对某些高效率机制的正确使用. 京剧 LOG Window: NOTE: CALL EXECUTE ...
沙发
mingfeng07 学生认证  发表于 2014-8-18 18:06:30 |只看作者 |坛友微信交流群
  1. data test;
  2. input gvkey year quarter v1 v2 v3 v4 v5 @@;
  3. cards;
  4. 1
  5. 1992
  6. 1
  7. 213
  8. 32
  9. 67
  10. 678
  11. 45

  12. 1
  13. 1992
  14. 2
  15. 546
  16. 87
  17. 87
  18. 123
  19. 3

  20. 1
  21. 1992
  22. 3
  23. 345
  24. 756
  25. 7567
  26. 235
  27. 123

  28. 1
  29. 1992
  30. 4
  31. 47
  32. 867
  33. 6
  34. 346
  35. 4

  36. 1
  37. 1993
  38. 1
  39. 6
  40. 6
  41. 546
  42. 547
  43. 3456

  44. 1
  45. 1993
  46. 2
  47. 546
  48. 234
  49. 346
  50. 679
  51. 546

  52. 1
  53. 1993
  54. 3
  55. 7547
  56. 5
  57. 5467
  58. 678
  59. 567

  60. 1
  61. 1993
  62. 4
  63. 54
  64. 346
  65. 567
  66. 56
  67. 679

  68. 1
  69. 1994
  70. 1
  71. 123
  72. 568
  73. 678
  74. 546
  75. 78078

  76. 1
  77. 1994
  78. 2
  79. 65
  80. 346
  81. 567
  82. 5687
  83. 978

  84. 1
  85. 1994
  86. 3
  87. 867
  88. 789
  89. 67
  90. 679
  91. 9

  92. 1
  93. 1994
  94. 4
  95. 6
  96. 346
  97. 6
  98. 78
  99. 967

  100. 1
  101. 1995
  102. 1
  103. 867
  104. 47
  105. 345
  106. 9677
  107. 856

  108. 1
  109. 1995
  110. 2
  111. 978
  112. 235
  113. 234
  114. 545
  115. 754

  116. 1
  117. 1995
  118. 3
  119. 967
  120. 1234
  121. 26
  122. 234
  123. 5

  124. 2
  125. 1992
  126. 2
  127. 8
  128. 56
  129. 8
  130. 1234
  131. 34

  132. 2
  133. 1992
  134. 3
  135. 78
  136. 34669
  137. 56
  138. 346
  139. 5

  140. 2
  141. 1992
  142. 4
  143. 0
  144. 54235
  145. 547
  146. 568
  147. 2345

  148. 2
  149. 1993
  150. 1
  151. 68
  152. 47
  153. 568
  154. 67
  155. 346

  156. 2
  157. 1993
  158. 2
  159. 54
  160. 346
  161. 89
  162. 978
  163. 547

  164. 2
  165. 1993
  166. 3
  167. 65
  168. 58
  169. 78
  170. 78
  171. 68

  172. 2
  173. 1993
  174. 4
  175. 7
  176. 57
  177. 56
  178. 967
  179. 67

  180. 2
  181. 1994
  182. 1
  183. 679
  184. 36
  185. 34
  186. 854
  187. 8567

  188. 2
  189. 1994
  190. 2
  191. 547
  192. 56
  193. 6457
  194. 65
  195. 342

  196. 3
  197. 1993
  198. 1
  199. 569
  200. 9
  201. 786
  202. 756
  203. 756

  204. 3
  205. 1993
  206. 2
  207. 80
  208. 7
  209. 7876
  210. 967
  211. 856

  212. 3
  213. 1993
  214. 3
  215. 689
  216. 579
  217. 56
  218. 56
  219. 78

  220. 3
  221. 1993
  222. 4
  223. 78
  224. 2352
  225. 76
  226. 754
  227. 568

  228. 3
  229. 1994
  230. 1
  231. 568
  232. 57
  233. 78
  234. 65
  235. 7

  236. 3
  237. 1994
  238. 2
  239. 7
  240. 54
  241. 767
  242. 8
  243. 867

  244. 3
  245. 1994
  246. 3
  247. 856
  248. 5465
  249. 435
  250. 7
  251. 867

  252. 3
  253. 1994
  254. 4
  255. 967
  256. 76
  257. 456
  258. 568
  259. 856

  260. 3
  261. 1995
  262. 1
  263. 856
  264. 7
  265. 546
  266. 678
  267. 54

  268. 3
  269. 1995
  270. 2
  271. 97
  272. 78
  273. 5678
  274. 978
  275. 634

  276. 3
  277. 1995
  278. 3
  279. 67
  280. 3
  281. 568
  282. 967
  283. 654

  284. 3
  285. 1995
  286. 4
  287. 568
  288. 434
  289. 7
  290. 867
  291. 654

  292. 3
  293. 1996
  294. 1
  295. 8967
  296. 6
  297. 856
  298. 867
  299. 7

  300. 3
  301. 1996
  302. 2
  303. 967
  304. 578
  305. 856
  306. 456745
  307. 568

  308. 3
  309. 1996
  310. 3
  311. 978
  312. 58
  313. 87
  314. 36
  315. 5687
  316. ;
  317. run;

  318. proc sort data=test;by gvkey year;run;
  319. proc sql;
  320. create table test1 as select *,count(gvkey) as count from test group by gvkey having count(gvkey)>=12;
  321. select count(distinct gvkey) into:count_var from test1;
  322. %let count_var=&count_var;
  323. select  count into:count1-:count&count_var from (select distinct gvkey,count from test1);
  324. quit;
  325. %macro test;
  326. %do i=1 %to &count_var;/*按组*/
  327.    %let k=%eval(&i-1);
  328.    %let count0=0;
  329.    %do j=1 %to &&count&i-11;/*组内*/
  330.       %let var_=%eval(&j+&&count&k);
  331.           %let var_1=%eval(&var_+11);
  332.       data test2;
  333.             set test1(firstobs=&var_ obs=&var_1);
  334.       run;

  335.      proc reg data=test2 outest=test3(keep=_RSQ_) edf;
  336.       model v1=v2 v3;
  337.           model v1=v2 v3 v4 v5;
  338.      run;
  339.      proc transpose data=test3 out=test3(keep=col1 col2  rename=(col1=r2_model_1 col2=r2_model_2));
  340.      run;
  341.          data test4;
  342.          set test3;
  343.          set test1(firstobs=&var_1 obs=&var_1);
  344.          run;
  345.          %if &i=1 and &j=1 %then %do;
  346.          data real_test;
  347.          set test4;
  348.          run;
  349.          %end;
  350.          %else %do;
  351.          proc append data=test4 base=real_test;
  352.          run;
  353.          %end;
  354.    %end;
  355. %end;
  356. %mend;
  357. %test;
  358. proc sql;
  359. create table test_ as select gvkey,year,quarter,r2_model_1,r2_model_2 from real_test;
  360. quit;
复制代码

使用道具

藤椅
h52101019 发表于 2014-8-19 02:17:19 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-8-18 18:06
感謝!非常感謝!感謝這好高級的編程!真的非常感謝!

使用道具

板凳
jingju11 发表于 2014-8-19 05:07:31 |只看作者 |坛友微信交流群
h52101019 发表于 2014-8-19 02:17
感謝!非常感謝!感謝這好高級的編程!真的非常感謝!
indeed.非常好的程序.
这是我的程序.为什么我选择这样的程序呢? 当然不时因为和以上的程序不一样. 原因是它给出一个非常清晰的LOG 窗口展示.程序良好的解析使得运行过程一目了然. 当然前提是保持好的效率.但是,很显然,使用宏和程序运行效率并不是一个概念.更多的宏程序的运行效率非常低下.因为较好的效率往往来源于对SAS运行的良好理解从而导致的对某些高效率机制的正确使用.
京剧



  1. ods select FitStatistics; ods graphics off;
  2. %macro mdl(fobs);
  3. proc reg data =test(firstobs =%eval(&fobs-12+1) obs =&fobs);
  4. g_&fobs._1: model v1 =v2 v3;
  5. g_&fobs._2: model v1 =v2 v3 v4 v5;
  6. %mend mdl;
  7. data t_run;
  8. set test end =Eof;
  9. by gvkey notsorted;
  10. if _n_ =1 then call execute('options nonotes ls =150; ods output FitStatistics(persist=proc) =fs(keep =model Label2 nValue2 where =(Label2="R-Square"));');
  11. if first.gvkey then n =0;
  12. n ++1;
  13. if n >= 12 then do;
  14. _obs_ =_n_; output;
  15. call execute('%mdl('||cats(_obs_)||')');
  16. end;
  17. if Eof then call execute('run;quit; ods output clear; options notes ls =120;');
  18. run;
  19. proc sql;
  20. create table final as
  21. select t1.gvkey, t1.year, t1.quarter, t2.nvalue2 as r2_model_1, t3.nvalue2 as r2_model_2
  22. from t_run as t1
  23. left join fs(where=(model like '%1') ) as t2 on t1._obs_ =input(scan(t2.model, 2, '_'), best.)
  24. left join fs(where=(model like '%2') ) as t3 on t1._obs_ =input(scan(t3.model, 2, '_'), best.)
  25. ;
  26. quit;
复制代码

LOG Window:
NOTE: CALL EXECUTE generated line.
1 + options nonotes ls =150; ods output FitStatistics(persist=proc) =fs(keep =model Label2 nValue2 where =(Label2="R-Square"));
2 + proc reg data =test(firstobs =1 obs =12); g_12_1: model v1 =v2 v3; g_12_2: model v1 =v2 v3 v4 v5;
3 + proc reg data =test(firstobs =2 obs =13); g_13_1: model v1 =v2 v3; g_13_2: model v1 =v2 v3 v4 v5;
4 + proc reg data =test(firstobs =3 obs =14); g_14_1: model v1 =v2 v3; g_14_2: model v1 =v2 v3 v4 v5;
5 + proc reg data =test(firstobs =4 obs =15); g_15_1: model v1 =v2 v3; g_15_2: model v1 =v2 v3 v4 v5;
6 + proc reg data =test(firstobs =25 obs =36); g_36_1: model v1 =v2 v3; g_36_2: model v1 =v2 v3 v4 v5;
7 + proc reg data =test(firstobs =26 obs =37); g_37_1: model v1 =v2 v3; g_37_2: model v1 =v2 v3 v4 v5;
8 + proc reg data =test(firstobs =27 obs =38); g_38_1: model v1 =v2 v3; g_38_2: model v1 =v2 v3 v4 v5;
9 + proc reg data =test(firstobs =28 obs =39); g_39_1: model v1 =v2 v3; g_39_2: model v1 =v2 v3 v4 v5;
10 + run;
10 + quit;
10 + ods output clear; options notes ls =120;

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
h52101019 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

报纸
mingfeng07 学生认证  发表于 2014-8-19 09:24:10 |只看作者 |坛友微信交流群
jingju11 发表于 2014-8-19 05:07
indeed.非常好的程序.
这是我的程序.为什么我选择这样的程序呢? 当然不时因为和以上的程序不一样. 原因 ...
比我写的有条理、清晰多了,还是京剧大神厉害!

使用道具

地板
jingju11 发表于 2014-8-20 05:26:43 |只看作者 |坛友微信交流群
mingfeng07 发表于 2014-8-19 09:24
比我写的有条理、清晰多了,还是京剧大神厉害!
方法不同而已.京剧

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

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

GMT+8, 2024-4-25 20:45