我正在研究这个例子,它解释了如何用proc mcmcin拟合标准 Cox 模型SAS 9.3。
对于数据中的第一行 ( ind=1),S=exp(bZ)与其他量一起计算。需要注意的是,这是一个从原始数据集的列构造S的新变量。
对于第二行 ( 1 < in < &N),S递增:S = S + exp(bZ)。
问题: SAS 如何保留S上一行的值?我本来希望有一个retain声明或类似的东西......
代码的相关部分:
if ind = 1 then do; /* first observation */
S = exp(bZ);
l = vstatus * bZ;
v = vstatus;
end;
else if (1 < ind < &N) then do;
if (lag1(time) ne time) then do;
l = vstatus * bZ;
l = l - v * log(S); /* correct the loglike value */
v = vstatus; /* reset v count value */
S = S + exp(bZ);
end;
else do; /* still a tie */
l = vstatus * bZ;
S = S + exp(bZ);
v = v + vstatus; /* add # of nonsensored values */
end;
end;