立即打开
目的:用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很不熟,也没找到相关书籍。从这个程序中我没有看出来输出的部分呢。
还请大家指点指点。
论文模拟部分,很着急啊!!
谢谢大家
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
栏目导航
热门文章
推荐文章
扫码加好友,拉您进群