找回密码
 注册
查看: 3891|回复: 2

请大家帮忙比较一下程序!

[复制链接]
发表于 2010-9-21 20:44:40 | 显示全部楼层 |阅读模式
程序1;
data a;
do id=1 to 25;
  do i=1 to 3;
    input y x1-x6@@;
    output;
  end;
end;
yy=2-y;
cards;
1 3 5 1 1 1 0
0 1 1 1 3 3 0
0 1 1 1 3 3 0
1 1 3 1 1 3 0
0 1 1 1 3 2 0
0 1 2 1 3 2 0
1 1 4 1 3 2 0
0 1 5 1 3 2 0
0 1 4 1 3 2 0
1 1 4 1 2 1 1
0 1 1 1 3 3 0
0 2 1 1 3 2 0
1 2 4 2 3 2 0
0 1 2 1 3 3 0
0 2 3 1 3 2 0
1 1 3 1 3 2 1
0 1 2 1 3 2 0
0 1 3 2 3 3 0
1 2 1 1 3 2 1
0 1 1 1 3 3 0
0 1 1 1 3 3 0
1 1 2 3 2 2 0
0 1 5 1 3 2 0
0 1 2 1 3 1 0
1 3 4 3 3 2 0
0 1 1 1 3 3 0
0 1 4 1 3 1 0
1 1 4 1 3 3 1
0 1 4 1 3 3 0
0 1 2 1 3 1 0
1 3 4 1 3 2 0
0 3 4 1 3 1 0
0 1 5 1 3 1 0
1 1 4 3 3 3 0
0 1 5 1 3 2 0
0 1 5 1 3 3 0
1 1 4 1 3 2 0
0 1 1 1 3 1 0
0 1 1 1 3 2 0
1 1 3 1 3 2 1
0 1 1 1 3 1 0
0 1 2 1 3 3 0
1 1 4 1 3 2 0
0 1 5 1 3 3 0
0 1 5 1 3 3 0
1 1 4 2 3 1 0
0 2 1 1 3 3 0
0 1 1 3 3 2 0
1 2 3 1 3 2 0
0 1 1 2 3 2 0
0 1 2 1 3 2 0
1 1 4 1 3 2 0
0 1 1 1 2 1 0
0 1 2 1 3 2 0
1 1 3 2 2 2 0
0 1 1 1 2 1 0
0 2 2 2 3 1 0
1 1 4 2 3 2 1
0 1 5 1 3 3 0
0 1 4 1 3 2 0
1 1 5 1 2 1 0
0 1 4 1 3 2 0
0 1 2 1 3 2 1
1 1 2 2 3 1 0
0 1 2 1 3 2 0
0 1 1 1 3 3 0
1 1 3 1 2 2 0
0 1 1 1 3 1 1
0 1 1 2 3 2 1
1 1 2 2 3 2 1
0 1 1 1 3 2 0
0 1 1 2 3 2 0
1 1 4 1 1 1 1
0 1 1 1 3 2 0
0 1 1 1 3 3 0
;
run;
proc print;
run;
proc phreg;
model yy*y(0)=x1-x6/ties=discrete selection=stepwise  sle=0.1 sls=0.15;
strata id;
run;
程序2:
data a;
do id=1 to 25;
  do i=1 to 3;
    input y x1-x6@@;
    output;
  end;
end;
cards;
1 3 5 1 1 1 0
0 1 1 1 3 3 0
0 1 1 1 3 3 0
1 1 3 1 1 3 0
0 1 1 1 3 2 0
0 1 2 1 3 2 0
1 1 4 1 3 2 0
0 1 5 1 3 2 0
0 1 4 1 3 2 0
1 1 4 1 2 1 1
0 1 1 1 3 3 0
0 2 1 1 3 2 0
1 2 4 2 3 2 0
0 1 2 1 3 3 0
0 2 3 1 3 2 0
1 1 3 1 3 2 1
0 1 2 1 3 2 0
0 1 3 2 3 3 0
1 2 1 1 3 2 1
0 1 1 1 3 3 0
0 1 1 1 3 3 0
1 1 2 3 2 2 0
0 1 5 1 3 2 0
0 1 2 1 3 1 0
1 3 4 3 3 2 0
0 1 1 1 3 3 0
0 1 4 1 3 1 0
1 1 4 1 3 3 1
0 1 4 1 3 3 0
0 1 2 1 3 1 0
1 3 4 1 3 2 0
0 3 4 1 3 1 0
0 1 5 1 3 1 0
1 1 4 3 3 3 0
0 1 5 1 3 2 0
0 1 5 1 3 3 0
1 1 4 1 3 2 0
0 1 1 1 3 1 0
0 1 1 1 3 2 0
1 1 3 1 3 2 1
0 1 1 1 3 1 0
0 1 2 1 3 3 0
1 1 4 1 3 2 0
0 1 5 1 3 3 0
0 1 5 1 3 3 0
1 1 4 2 3 1 0
0 2 1 1 3 3 0
0 1 1 3 3 2 0
1 2 3 1 3 2 0
0 1 1 2 3 2 0
0 1 2 1 3 2 0
1 1 4 1 3 2 0
0 1 1 1 2 1 0
0 1 2 1 3 2 0
1 1 3 2 2 2 0
0 1 1 1 2 1 0
0 2 2 2 3 1 0
1 1 4 2 3 2 1
0 1 5 1 3 3 0
0 1 4 1 3 2 0
1 1 5 1 2 1 0
0 1 4 1 3 2 0
0 1 2 1 3 2 1
1 1 2 2 3 1 0
0 1 2 1 3 2 0
0 1 1 1 3 3 0
1 1 3 1 2 2 0
0 1 1 1 3 1 1
0 1 1 2 3 2 1
1 1 2 2 3 2 1
0 1 1 1 3 2 0
0 1 1 2 3 2 0
1 1 4 1 1 1 1
0 1 1 1 3 2 0
0 1 1 1 3 3 0
;
run;
proc print;
run;
data b;
set a;
drop i;
yy=2-y;
proc print;
run;
proc phreg;
model yy*y(0)=x1-x6/ties=discrete selection=stepwise  sle=0.1 sls=0.15;
strata id;
run;
两者为什么不同,而第一段程序运行不出结果!标下划线的事两者的不同之处,谢谢!
回复

使用道具 举报

发表于 2010-9-21 23:35:03 | 显示全部楼层
就Debug程序本身而言。把code "yy=2-y;"放在"do...end"循环里面(output前,你可以试试在output前后的区别)就可以了。

至于为什么是这样。一点想法,可能不能说清楚意思。你可以再仔细琢磨琢磨。
第一个程序并没有计算出变量yy的值。在dataset中所有的yy都是空的。
do循环已经把所有的data读入到dataset中,指针已经到达dataset的最后一条记录,然后跳出do循环后,再执行"yy=2-y"这个code,这样不能够得到yy的值。
我们应该在得到每一条记录值的时候,数据在缓冲区,还未写入dataset时,就应该执行code "yy=2-y",这样变量yy就和其它变量一起写入dataset中。这样我们就可以正确的得到yy值了。
Hope this is helpful for you.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-23 15:49:28 | 显示全部楼层
回复 jpingl1273 的帖子


    问题的症结是楼上说的那样!yy不是哑变量,问题是在于循环,不是yy=2-y(0)有错误!
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2025-4-5 20:18 , Processed in 0.021998 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表