楼主: lipeng0809
6599 24

求非线性曲线回归拟合优度值的输出 [推广有奖]

11
lipeng0809 发表于 2016-6-15 09:41:42 来自手机 |只看作者 |坛友微信交流群
大神,我把内容输出来啦,可是怎么描述让它做除法呢?能不能给几句命令,提示一下。谢谢 image0.jpg

使用道具

12
高贵林 发表于 2016-6-15 09:49:36 |只看作者 |坛友微信交流群
lipeng0809 发表于 2016-6-14 21:36
您好,这几天,我一直在试,可是总也用不好ods output。您帮我改改吧!我就想输出您说的数据在计算。
ods o ...
ods output 生成 dataset, 不是生成文件。ods output ANOVA=simu_output 就是把 nlin 生成的 ANOVA表输出到 simu_output 这个 dataset 里去。
你的 proc nlin 里需要指定你的模型和参数。没有这些信息,SAS 就不知道你要什么样的曲线,哪些是曲线的参数。

使用道具

13
lipeng0809 发表于 2016-6-15 09:59:29 来自手机 |只看作者 |坛友微信交流群
谢谢大神,我终于把表格输出来啦!太感谢您了。可是,我要用model sum of squares 除以 corrected total 的sum of
squares这个命令怎么编辑呀!再谢

使用道具

14
lipeng0809 发表于 2016-6-15 17:58:24 来自手机 |只看作者 |坛友微信交流群
大神,我转置了生成的数据集,又用where命令挑出了ss行,有增加了一列,计算col1/col3。好麻烦,您有没有好办法?能少几步骤

使用道具

15
高贵林 发表于 2016-6-16 10:49:13 |只看作者 |坛友微信交流群
lipeng0809 发表于 2016-6-15 17:58
大神,我转置了生成的数据集,又用where命令挑出了ss行,有增加了一列,计算col1/col3。好麻烦,您有没有好 ...
没有,就是这么麻烦。
如果不想用转置可以看七楼的代码,先把两个 SS 分别作为两个 datasets 输出,然后merge 到一起再计算。复杂程度差不多,省不了多少事。

使用道具

16
lipeng0809 发表于 2016-6-17 06:43:00 来自手机 |只看作者 |坛友微信交流群
大神,很感谢您的帮助。
在使用proc nlin过程中,simu临时数据集的格式如下图所示可以吗? image0.jpg

使用道具

17
高贵林 发表于 2016-6-17 09:44:43 |只看作者 |坛友微信交流群
lipeng0809 发表于 2016-6-17 06:43
大神,很感谢您的帮助。
在使用proc nlin过程中,simu临时数据集的格式如下图所示可以吗?
要拟合曲线,先要有模型。你先要想想你的自变量和因变量的关系,用个数学公式表达出来,就像 y=f(x1,x2,x3....)。 有了这个,才能做 nlin。 我不知道你的模型是怎么样的,哪是自变量,哪是因变量,所以没法回答你的问题。

使用道具

18
lipeng0809 发表于 2016-6-18 11:45:31 |只看作者 |坛友微信交流群
大神,您帮我看看哪里不对?怎么a5里的数都一样。拜谢
options nodate nonotes nosource nosource2;
%macro sim (e,f,name);
/*模拟100次*/
%do j=1 %to 100;
/*计算d1、d2、d3模拟效应值,存放在临时数据集simu,计算simu的拟合优度*/
DATA SIMU ;
DO n = 1 to &e ;
%do i= 0 %to 4 ;
d&i=0.1+&i*0.2;
R=1.002+9.023/(1+exp(10.47*(0.5-d&i)));
v&i=R+&f*R*rannor(&j);
%end ;
output ;
end;

/*合并simu集的数据,使变量为v,d,保存在数据集new4         */
data first1;
set simu ;keep d0 v0;
data second1;
set first1;
rename d0=d v0=v;


data first2;
set simu ;keep d1 v1;
data second2;
set first2;
rename d1=d v1=v;

data first3;
set simu ;keep d2 v2;
data second3;
set first3;
rename d2=d v2=v;


data first4;
set simu ;keep d3 v3;
data second4;
set first4;
rename d3=d v3=v;


data first5;
set simu ;keep d4 v4;
data second5;
set first5;
rename d4=d v4=v;



data new1;
set second1 second2 ;
data new2;
set new1 second3;
data new3;
set new2 second4;
data new4;
set new3 second5;


ods output anova=one;
proc nlin data=new4;
model v=a + b/(1 + exp((0.5-d)*c))  ;
parms a=1 b=9 c=10.5 ;
run;
ods output close;

proc transpose data=one out=two;
run;
data three;
set two;
where _NAME_='SS';
run;
DATA four;
SET three;
COL4=COL1/COL3;
RUN;
quit;
/*计算new4集拟合优度,追加在a5中         */
proc append data=four base=a5 ; run

%end ;
%mend sim ;
%sim (40,0.5,a5);

使用道具

19
高贵林 发表于 2016-6-18 20:51:33 |只看作者 |坛友微信交流群
lipeng0809 发表于 2016-6-18 11:45
大神,您帮我看看哪里不对?怎么a5里的数都一样。拜谢
options nodate nonotes nosource nosource2;
%mac ...
问题在这一行:  
proc append data=four base=a5 ; run

要在 run 的后面加上 ;

使用道具

20
lipeng0809 发表于 2016-6-19 11:44:34 来自手机 |只看作者 |坛友微信交流群
嗯嗯,您真厉害!真的解决问题了。大神,真心感谢您啊!可以称呼您高老师么?谢谢!

使用道具

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

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

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

GMT+8, 2024-4-26 08:42