Statistical & Mathematical Formulas
Greenwood’s Formula & Kalbfleisch-Prentice Log-Log Survival 95% CI
Calculate Kaplan-Meier survival standard error SE(S(t)) = S(t) * SQRT(Σ d_i / (n_i * (n_i - d_i))) via Major Greenwood’s 1926 formula and construct bounded [0, 1] log-log 95% confidence limits S(t)^EXP(±1.96 * SQRT(V) / |LN(S(t))|).
Why SAS and R use log-log Kalbfleisch-Prentice CIs instead of naive S(t) ± 1.96·SE!
Major Greenwood (1926) derived the exact delta-method variance of a product-limit survival curve S(t) = Π(1 - d_i / n_i) across event times where d_i deaths occur out of n_i patients at risk: SE(S(t)) = S(t) * SQRT(Σ [d_i / (n_i * (n_i - d_i))])! However, adding symmetric ±1.96 * SE(S(t)) directly onto S(t) = 0.92 with SE = 0.0582 produces an impossible upper survival bound of 1.0341 (> 100% survival)!
John Kalbfleisch and Ross Prentice (1980)—now the default in R’s survival package and SAS PROC LIFETEST—solved that boundary violation via the complementary log-log transform LN(-LN(S(t))), yielding asymmetric 95% bounds strictly trapped inside (0, 1): θ = EXP(1.96 * SQRT(V_sum) / ABS(LN(S(t)))), Lower_95 = S(t)^θ, and Upper_95 = S(t)^(1 / θ)! Watch at S(t) = 0.9200 with cumulative Greenwood sum V_sum = 0.0040: naive upper CI overshoots 1.0341, whereas log-log Upper_95 stays cleanly bounded at 0.9813 (Lower_95 = 0.6916); at S(t) = 0.7200 and V_sum = 0.0085, SE = 0.0664 and the 95% log-log CI spans [0.5659, 0.8274]!
| Kaplan-Meier Point S(t) & Greenwood Sum V_sum | Greenwood SE(S(t)) | Log-Log 95% Lower Bound | Log-Log 95% Upper Bound |
|---|---|---|---|
| 12-Month Survival (S = 0.7200, V_sum = 0.0085) | 0.0664 | 0.5659 | 0.8274 |
| Early 3-Month Survival (S = 0.9200, V_sum = 0.0040) | 0.0582 | 0.6916 | 0.9813 (Never > 1.00!) |
| Boundary S <= 0 or S >= 1 | Log-Log Singularity | "Invalid Survival Inputs" | Requires 0 < S(t) < 1, V_sum > 0 |
Greenwood Survival Standard Error SE(S(t)) = S(t) * SQRT(V_sum)
Evaluates S(t) * SQRT(V_sum) from Kaplan-Meier survival probability B2 and cumulative Σ d_i / (n_i*(n_i - d_i)) sum B3.
=IF(OR(B2 <= 0, B2 >= 1, B3 <= 0), "Invalid Survival Inputs", ROUND(B2 * SQRT(B3), 4))Kalbfleisch-Prentice Log-Log 95% Upper Survival Confidence Limit
Computes S(t) ^ EXP(-1.96 * SQRT(V_sum) / ABS(LN(S(t)))) (use +1.96 in the exponent for the lower confidence limit).
=IF(OR(B2 <= 0, B2 >= 1, B3 <= 0), "Invalid Survival Inputs", ROUND(B2 ^ EXP(-1.96 * SQRT(B3) / ABS(LN(B2))), 4))Try the example
Use the original values or change them to test your understanding.