我正在研究this example,它解釋瞭如何在SAS 9.3
中使用標準Cox型號proc mcmc
。SAS如何在沒有「保留」聲明的情況下保留前一行的值?
對於數據中的第一行(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;
我同意您對'滯後'的警告。但是,即使在'else do loop'中,S的值也會保留在前一行並且遞增... – Marco
您能否提供樣本數據集和結果? –
那麼,數據集可以在這裏找到:http://support.sas.com/documentation/cdl/en/statug/63962/HTML/default/viewer.htm#statug_phreg_sect046.htm,產生結果的代碼是這裏:http://support.sas.com/documentation/cdl/en/statug/63962/HTML/default/viewer.htm#statug_mcmc_sect059.htm;謝謝! – Marco