全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1656 1
2008-04-13
目的:用PROC IML过程产生数据,数据满足COX比例风险模型,协变量为2个,取值均为1或者-1,程序中用Z表示。
参数描述:nv表示协变量的个数。ns表示样本量。nf发生死亡的个体数。bt表示协变量对应的回归系数的真实值。nr表示重复的次数。nc(k)表示在第k次与第k+1次死亡之间删失的个体数。
proc IML;
start data;
  nv=2;ns=100;nf=100;
bt={0.5 1}; nr=1000; r=I(nv);
  nc={0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0};
   seed1=5630123;
   seed2=937841;
mtrx1=shape({-1,-1},25,2);mtrx2=shape({1,-1},25,2);mtrx3=shape({-1,1},25,2);
mtrx4=shape({1,1},25,2);
z=mtrx1//mtrx2//mtrx3//mtrx4;
rz=exp(z*bt`);
ft=repeat(0,1,ns); fo=repeat(0,1,nf);
y=repeat(1,ns,nf);
do k=1 to nf;
      risk=rz#y(|,k|);
      trk=sum(risk);
      hit=uniform(seed1)*trk;
      j=0;
      ptr=0;
do while (ptr<hit);
          j=j+1;
            prisk=risk(|1:j|);
            ptr=sum(prisk);
            end;
      ft(|j|)=k;
      fo(|k|)=j;
    if k<nf then y(|j,k+1:nf|)=0;
      if nc(|k|)>0 & k<nf then do i=1 to nc(|k|);
                        tc=y(|+,k+1|);
hic=tc*uniform(seed2);                             j=0;     ptc=0;
do while(ptc<hic);
j=j+1;
ptc=sum(y(|1:j,k+1|));
   end;
y(|j,k+1:nf|)=0;
end;   end;
finish data ; run data;

我的问题是:如何输出程序里所产生的数据呢??用什么变量记录程序中所产生的数据。

我对IML很不熟,也没找到相关书籍。从这个程序中我没有看出来输出的部分呢。
还请大家指点指点。
论文模拟部分,很着急啊!!
谢谢大家

二维码

扫码加我 拉你入群

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

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

全部回复
2008-4-13 16:59:00

请大家帮帮忙指点指点阿!!!

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群