Search code examples
sassurvival-analysis

How SAS computes Ridge values in PROC PHREG


The itprint option in the class statement of SAS proc phreg causes the display of the iteration history. This includes a Ridge value, along with the beta values and log likelihoods for each iteration. Ridge is usually zero but is non-zero whenever a log likelihood would otherwise be more negative than the log likelihood for the previous iteration. I need to know how SAS computes that ridge value and I can find nothing in the Details section for that procedure, or anywhere else.

It appears that, by default, that Ridge value is always 0.0001 * 2^n, and that SAS starts with n=0 and increments n until log likelihood is less negative than in the previous iteration. But I have tested at least one example where SAS used Ridge=0.4096 when Ridge=0.2048 would suffice.

Update: I now think that SAS is iterating 4^n, rather than 2^n. That explains skipping 2048 and is consistent with my testing so far.

So I think I have answered my own question and would now like academic support for this method. I'll likely seek that at Cross Validated as Robert Penridge and Joe suggest.


Solution

  • When PHREG fails to converge, that is, when a log likelihood value is more negative than in the previous iteration, the procedure computes a ridge value. This value is RIDGEINIT * 2^n, with n incremented until either the log likelihood value becomes less negative, or the ridge value reaches RIDGEMAX.

    The default RIDGEINIT is 1e-4.

    The default RIDGEMAX is MAX(1, RIDGEINIT) * 2000.