我正在研究这个例子,它解释了如何用proc mcmc
in拟合标准 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;