楼主: crazebird
2187 13

[SAS EM] SAS 多个NLIN过程放一张图中,做PLOT图求教 [推广有奖]

  • 0关注
  • 0粉丝

大专生

58%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
2.9147
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1803 点
帖子
16
精华
0
在线时间
91 小时
注册时间
2010-3-13
最后登录
2024-3-20

1论坛币


各位大神,遇到一个很大的难题,有3组数据,想分别用NLIN模型运算,放在一张图中,但是程序错误不可用。研究了好多天,图片只能显示3组数据的散点图和其中1组数据的NLIN拟合图,如图所示,之前的程序也在下面。我最终的结果是想把3组数据的散点图,以及3组数据的NLIN模型拟合图均放在一张图片中,请大神们赐教,拜托了,谢谢


QQ截图20150101224844.jpg


data expd;
input x y z o @@;
datalines;

23  4497  4331  3206
23  4472  4283  3143
23  4158  4004  2962
25  4241  4083  3031
25  3985  3845  2866
26  4240  4092  3062
26  4915  4742  3530
27  3271  3147  2339
27  3133  3013  2234
27  4850  4681  3488
27  4964  4796  3588
28  3760  3624  2685
28  5055  4883  3695
28  4522  4354  3270
29  5458  5262  3907
29  4575  4423  3254
30  4933  4749  3574
30  5464  5286  3968

;

proc nlin data = expd best = 10 method = gauss;
parms a=6000 to 12000 by 100 b=-3 to -5 by 1 ;
model y=a*(1-exp(-exp(b)*(x)));
output out = expout p = ygs;
run;
proc nlin data = expd best = 10 method = gauss;
parms c=6000 to 12000 by 100 d=-3 to -5 by 1 ;
model z=c*(1-exp(-exp(d)*(x)));
output out = expout p = ygsa;
run;
proc nlin data = expd best = 10 method = gauss;
parms e=6000 to 12000 by 100 f=-3 to -5 by 1 ;
model o=e*(1-exp(-exp(f)*(x)));
output out = expout p = ygsb;
run;
goptions reset = global gunit = pct cback = white noborder
         htitle = 3 htext = 3 ftext = calibri colors = (black);
proc gplot data = expout;
plot y*x ygs*x z*x o*x ygsa*x ygsb*x /haxis=axis1 vaxis=axis2  overlay noframe legend hminor=0;
symbol1 i=none v=dot cv=red h=2.5 w=2;
symbol2 i=spline v=none l=1 h=2.5 w=2.5;
symbol3 i=none v=star cv=blue h=2.5 w=2;
symbol4 i=none v=plus cv=green h=2.5 w=2;
symbol5 i=spline v=none l=3 h=2.5 w=2.5;
symbol6 i=spline v=none l=2 h=2.5 w=2.5;
axis1 minor=(number=1)  order=(20 to 120 by 20)
label=(h=13pt f="calibri" "Body Weight (kg)") ;
axis2 minor=(number=1) order=(0 to 12000 by 2000)
label=(h=13pt a=90 r=0 f=calibri "NE Intake (kcal/day)");
run;



最佳答案

whymath 查看完整内容

帮你改好了,把数据填充完整就可以得到你给出的结果了

回帖推荐

whymath 发表于9楼  查看完整内容

帮你改好了,把数据填充完整就可以得到你给出的结果了
已有 1 人评分热心指数 收起 理由
eijuhz + 1 精彩帖子

总评分: 热心指数 + 1   查看全部评分

沙发
whymath 发表于 2019-3-8 23:11:47 |只看作者 |坛友微信交流群
crazebird 发表于 2019-3-9 22:42
你好,splot过程怎么写,你能帮改写一下吗,SAS我基本是小白,这里面的程序我都是照葫芦画瓢的,万分感谢 ...
帮你改好了,把数据填充完整就可以得到你给出的结果了
  1. data expd;
  2.         input x y z o @@;
  3.         datalines;
  4.         23  4497  4331  3206
  5.         23  4472  4283  3143
  6.         23  4158  4004  2962
  7.         25  4241  4083  3031
  8.         25  3985  3845  2866
  9.         26  4240  4092  3062
  10.         26  4915  4742  3530
  11.         27  3271  3147  2339
  12.         27  3133  3013  2234
  13.         27  4850  4681  3488
  14.         27  4964  4796  3588
  15.         28  3760  3624  2685
  16.         28  5055  4883  3695
  17.         28  4522  4354  3270
  18.         29  5458  5262  3907
  19.         29  4575  4423  3254
  20.         30  4933  4749  3574
  21.         30  5464  5286  3968
  22. ;

  23. proc nlin data = expd best = 10 method = gauss;
  24.         parms a=6000 to 12000 by 100 b=-3 to -5 by -1 ;
  25.         model y=a*(1-exp(-exp(b)*(x)));
  26.         output out = expout1 p = ygs;
  27. run;

  28. proc nlin data = expd best = 10 method = gauss;
  29.         parms c=6000 to 12000 by 100 d=-3 to -5 by -1 ;
  30.         model z=c*(1-exp(-exp(d)*(x)));
  31.         output out = expout2 p = ygsa;
  32. run;

  33. proc nlin data = expd best = 10 method = gauss;
  34.         parms e=6000 to 12000 by 100 f=-3 to -5 by -1 ;
  35.         model o=e*(1-exp(-exp(f)*(x)));
  36.         output out = expout3 p = ygsb;
  37. run;

  38. data expout;
  39.         merge expout1-expout3;
  40. run;

  41. goptions reset = global gunit = pct cback = white noborder htitle = 3 htext = 3 colors = (black);
  42. proc gplot data = expout;
  43.         plot y*x ygs*x z*x o*x ygsa*x ygsb*x /haxis=axis1 vaxis=axis2 overlay noframe legend hminor=0;

  44.         symbol1 i=none v=dot cv=red h=2.5 w=2;
  45.         symbol2 i=spline v=none l=1 h=2.5 w=2.5;
  46.         symbol3 i=none v=star cv=blue h=2.5 w=2;
  47.         symbol4 i=none v=plus cv=green h=2.5 w=2;
  48.         symbol5 i=spline v=none l=3 h=2.5 w=2.5;
  49.         symbol6 i=spline v=none l=2 h=2.5 w=2.5;

  50.         axis1 minor=(number=1) order=(20 to 120 by 20) label=(h=13pt f="calibri" "Body Weight (kg)") ;
  51.         axis2 minor=(number=1) order=(0 to 12000 by 2000) label=(h=13pt a=90 r=0 f=calibri "NE Intake (kcal/day)");
  52. run;
  53. quit;
复制代码


SASUSER

使用道具

藤椅
whymath 发表于 2019-3-9 18:44:32 |只看作者 |坛友微信交流群
这里能写多个plot语句的话就可以,否则建议使用sgplot过程

使用道具

板凳
crazebird 发表于 2019-3-9 22:42:29 来自手机 |只看作者 |坛友微信交流群
whymath 发表于 2019-3-9 18:44
这里能写多个plot语句的话就可以,否则建议使用sgplot过程
你好,splot过程怎么写,你能帮改写一下吗,SAS我基本是小白,这里面的程序我都是照葫芦画瓢的,万分感谢了

使用道具

报纸
nkunku 发表于 2019-3-10 08:11:48 |只看作者 |坛友微信交流群
这个如果用其他软件来解决的话,so easy

plm.jpg (67.46 KB)

plm.jpg

使用道具

地板
crazebird 发表于 2019-3-10 09:33:38 来自手机 |只看作者 |坛友微信交流群
nkunku 发表于 2019-3-10 08:11
这个如果用其他软件来解决的话,so easy
你好,用什么软件啊,能分享一下吗,谢谢

使用道具

7
nkunku 发表于 2019-3-10 14:19:25 |只看作者 |坛友微信交流群
crazebird 发表于 2019-3-10 09:33
你好,用什么软件啊,能分享一下吗,谢谢
Origin等

使用道具

8
crazebird 发表于 2019-3-10 14:31:06 来自手机 |只看作者 |坛友微信交流群
nkunku 发表于 2019-3-10 14:19
Origin等
你好,不会用阿

使用道具

9
crazebird 发表于 2019-3-10 14:34:18 来自手机 |只看作者 |坛友微信交流群
crazebird 发表于 2019-3-8 23:11
各位大神,遇到一个很大的难题,有3组数据,想分别用NLIN模型运算,放在一张图中,但是程序错误不可用。 ...
自己来评论一下,各位大神们,有会SAS编程的吗,帮我编一下啊,真的真的是万分感谢了

使用道具

10
crazebird 发表于 2019-3-12 11:11:27 |只看作者 |坛友微信交流群
whymath 发表于 2019-3-8 23:11
帮你改好了,把数据填充完整就可以得到你给出的结果了
大神,真的是太感谢你了,太厉害了,现在还有一个问题,图例 legend,能否让其只显示想要展示的图例,比如一共6组数据,只想显示其中的4个或者5个图例,原代码和图如下所示
Inkedgplot35_LI.jpg
proc gplot data = expout;
plot y*x ygs*x z*x o*x ygsa*x ygsb*x /haxis=axis1 vaxis=axis2 overlay noframe legend=legend1 hminor=0;
symbol1 i=none v=dot cv=red h=2.5 w=2;
symbol2 i=spline v=none l=1 h=2.5 w=2.5;
symbol3 i=none v=star cv=blue h=2.5 w=2;
symbol4 i=none v=plus cv=green h=2.5 w=2;
symbol5 i=spline v=none l=3 h=2.5 w=2.5;
symbol6 i=spline v=none l=2 h=2.5 w=2.5;
legend1 down=3 position=(top right inside) frame
label=(f=calibri h=1.5 "") value=(f=calibri "" "LO" "DO" "WO" "DO" "EE");
axis1 minor=(number=1) order=(20 to 120 by 20) label=(h=13pt f="calibri" "Body Weight (kg)") ;
axis2 minor=(number=1) order=(0 to 12000 by 2000) label=(h=13pt a=90 r=0 f=calibri "NE Intake (kcal/day)");
run;
quit;

使用道具

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

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

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

GMT+8, 2024-4-25 05:16