楼主: yscapital
4670 12

[问答] SAS中如何调用分析结果做进一步分析 [推广有奖]

  • 0关注
  • 0粉丝

大专生

25%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9237 点
帖子
25
精华
0
在线时间
57 小时
注册时间
2012-10-25
最后登录
2021-8-18

楼主
yscapital 发表于 2017-6-22 15:09:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大虾们好,问一个弱弱的问题,我现在在做一个研究,大致的思路是这样的:对10个数据集分别进行单变量回归得到10个回归结果,既10个斜率和10个截距。
现在需要把这个10组“斜率-截距”数据做出散点图来,即斜率为横轴,截距为纵轴,
想问一下这种操作如果要用SAS代码自动实现,该如何做? 简单地说,就是我不知
道在回归分析结束后,后续的分析该如何引用前面回归得到的斜率和截距数据,老
师讲的都是每次回归后在SAS的output窗口中把结果汇总出来,而不知道如何继续
引用这些结果做后续分析。

我现在用的笨办法是回归10组数据后,记录下10个“斜率-截距”数据,然后新建一个
程序文档,用DATA生成一个新数据集,再GPLOT过程步画出来,这样感觉很笨,而且
数据后续还会变,这样很没效率。大虾们,能帮我释疑吗?
二维码

扫码加我 拉你入群

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

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

关键词:output outpu gplot sas代码 回归结果 SAS 后续引用 代码 命令

一起进步。

沙发
yscapital 发表于 2017-6-22 15:57:01
补充一下,假设我现在有5个回归分析如下:
  1. data reg1;
  2. input x y;
  3. cards;
  4. 1.2 1.5
  5. 1.6 2.1
  6. 1.7 3.4
  7. 1.4 2.0
  8. 0.9 1.1
  9. 1.1 1.4
  10. ;
  11. proc reg;
  12. model y=x;
  13. run;


  14. data reg2;
  15. input x y;
  16. cards;
  17. 1.3 1.6
  18. 1.2 2.2
  19. 1.8 3.6
  20. 1.3 1.7
  21. 0.8 1.0
  22. 1.0 1.5
  23. ;
  24. proc reg;
  25. model y=x;
  26. run;


  27. data reg3;
  28. input x y;
  29. cards;
  30. 2.2 4.5
  31. 2.6 5.1
  32. 3.7 6.4
  33. 4.4 7.0
  34. 1.9 3.1
  35. 2.1 3.4
  36. ;
  37. proc reg;
  38. model y=x;
  39. run;


  40. data reg4;
  41. input x y;
  42. cards;
  43. 3.2 4.5
  44. 3.6 5.1
  45. 2.7 3.4
  46. 4.4 7.0
  47. 2.9 4.1
  48. 3.1 4.4
  49. ;
  50. proc reg;
  51. model y=x;
  52. run;


  53. data reg5;
  54. input x y;
  55. cards;
  56. 2.8 4.8
  57. 2.5 5.0
  58. 3.6 6.3
  59. 4.5 7.2
  60. 1.9 3.1
  61. 2.2 3.6
  62. ;
  63. proc reg;
  64. model y=x;
  65. run;
复制代码


这样,我就得到了5个回归结果,包含5个斜率,5个截距。现在我想调用这5个斜率和5个截距,以斜率为横轴,截距为纵轴,做一个散点图出来,请问我接下来该如何写代码?

请大虾们指点迷津。

一起进步。

藤椅
coelicolor 发表于 2017-6-22 19:11:43

可以将部分代码写成macro,然后调用,可以省点事情

板凳
yscapital 发表于 2017-6-23 09:25:46
其实我就想知道,当用SAS得到了一些统计分析结果,比如得到了一些统计量后,如何调用这些统计量进行后续的编程序。

报纸
learsaas 发表于 2017-6-23 10:34:56
不一定要用宏,看你具体需求的。根据你的内容给你写了个示例:
  1. /*模拟数据*/
  2. data  a;
  3.         do model=1 to 10;
  4.                 do j=1 to 10;
  5.                         x=ranuni(0);
  6.                         y=ranuni(1);
  7.                         output;
  8.                 end;
  9.         end;
  10.         drop j;
  11. run;

  12. proc sort data=a;
  13.         by model;
  14. run;
  15. proc reg data=a OUTEST=b(keep=model Intercept x) noprint;
  16.         by  model;
  17.         model y=x;
  18. run;
  19. quit;
  20. proc plot data=b;
  21.    plot Intercept*x;
  22. run;
复制代码

地板
yscapital 发表于 2017-6-23 10:57:07
learsaas 发表于 2017-6-23 10:34
不一定要用宏,看你具体需求的。根据你的内容给你写了个示例:
谢谢 大神啊 感激涕零[em23][em23]

7
coelicolor 发表于 2017-6-23 22:31:45

跟着学习一下

8
Wavegu 发表于 2017-6-24 02:06:05
%macro par;
data par;
input Intercept slope;
run;

%do i = 1 %to 5;
proc reg data = reg&i;
  model y = x;
  ods output ParameterEstimates = para&i;
run;

data _null_;
  set para&i;
  if Variable =  "Intercept" then do;
    call symput("Intercept",Estimate);end;
  if Variable = "x" then do;
    call symput("slope",Estimate);end;
run;

data par&i;
Intercept = &Intercept;
slope = &slope;
run;

data par;
  set par par&i;
run;
%end;
%mend;

%par


proc sgplot data = par;
  scatter x = slope y = Intercept;
run;

9
Wavegu 发表于 2017-6-24 02:07:04
写了个macro 能把你要的参数弄到par dataset 中,然后再绘图。

10
yscapital 发表于 2017-6-24 12:19:52
Wavegu 发表于 2017-6-24 02:06
%macro par;
data par;
input Intercept slope;
非常感谢大神的付出。
我对宏还不是很了解,看了你编写的宏才知道SAS博大精深。
还有一个小问题,我在使用SAS中经常需要用到如下功能:
调用各种统计分析过程并run后,SAS会给出该统计过程的分析结果。而我经常需要使用分析结果中的某个统计量进行后续的分析。比如proc means过程分析了一个set后,它会提供总和、均值、最大值、最小值等等这些统计量的汇总结果。我得到这些结果,比如均值,然后我在后续的SAS程序中需要把用这个均值作为我后续代码的一个参数拿去做别的计算或使用它生成新的数据集,请问,我该如何在后续程序中调用这些统计量呢?

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 18:23