I've found plenty of formulas showing how to find the mean survival time for an exponential or Weibull distribution, but I'm having considerably less luck for log-normal survival functions.

Given the following survival function:

$$S(t) = 1 - \phi \left[ {{{\ln (t) - \mu } \over \sigma }} \right]$$

How does one find the mean survival time. As I understand it, $\sigma$ is the estimated scale parameter, and that exp($\beta$) from a parametric survival model is $\mu$. While I think I can manipulate it symbolically to get t all by itself after setting S(t) = 0.5, what's especially stumping me is how to handle $\phi$ in something like R when it actually comes down to inputting all the estimates and obtaining a mean time.

Thus far, I've been generating the survival function (and associated curves), like so:

beta0 <- 2.00
beta1 <- 0.80
scale <- 1.10

exposure <- c(0, 1)
t <- seq(0, 180)
linmod <- beta0 + (beta1 * exposure)
names(linmod) <- c("unexposed", "exposed")

## Generate s(t) from lognormal AFT model

s0.lnorm <- 1 - pnorm((log(t) - linmod["unexposed"]) / scale)
s1.lnorm <- 1 - pnorm((log(t) - linmod["exposed"]) / scale)

## Plot survival
plot(t,s0.lnorm,type="l",lwd=2,ylim=c(0,1),xlab="Time",ylab="Proportion Surviving")

Which yields the following:

enter image description here

  • 3
    $\begingroup$ I guess you mean "median survival time" rather than "mean survival time". The median survival time is easily found to be $t_{\textrm{med}} = exp(\mu)$. $\endgroup$
    – ocram
    Aug 4, 2012 at 11:24
  • $\begingroup$ @ocram - Well, that was...easy. Convert that to an answer and I'll accept. Out of curiosity however, why do you assume I mean "median" rather than "mean"? $\endgroup$
    – Fomite
    Aug 4, 2012 at 14:10
  • 1
    $\begingroup$ If you meant mean and not median then you don't set S(t)=0.5. The lognormal is a highly skewed distribution and the mean and median differ. The mean survival time is more complicated than the median. $\endgroup$ Aug 4, 2012 at 14:22
  • $\begingroup$ @EpiGard: I assumed "median" rather than "mean" for the reason pointed out by Michael C. ;-) I am going to convert my comment to an answer. $\endgroup$
    – ocram
    Aug 4, 2012 at 15:44
  • 1
    $\begingroup$ The mean survival time is not very complicated. See my answer. (The various moments are also relatively easily calculated.) $\endgroup$
    – Mark Adler
    Aug 4, 2012 at 22:25

3 Answers 3


The median survival time, $t_{\textrm{med}}$, is the solution of $S(t) = \frac{1}{2}$; in this case, $t_{\textrm{med}} = \exp(\mu)$. This is because $\Phi(0) = \frac{1}{2}$ when $\Phi$ denotes the cumulative distribution function of a standard normal random variable.

When $\mu = 3$, the median survival time is around $20.1$ as depicted in the picture below.

enter image description here

  • $\begingroup$ The mean survival time is most easily found by expressing it in terms of the moment generating function of a normal random variable evaluated at $t = 1$. $\endgroup$
    – cardinal
    Aug 4, 2012 at 20:19

The R rms package can help:

f <- psm(Surv(dtime, event) ~ ..., dist='lognormal')
m <- Mean(f)
m   # see analytic form
m(c(.1,.2)) # evaluate mean at linear predictor values .1, .2
m(predict(f, expand.grid(age=10:20, sex=c('male','female'))))
# evaluates mean survival time at combinations of covariate values
  • $\begingroup$ Likely quite helpful for the future, but the actual survival data itself isn't in R - it's on the list to translate at some point, but right now it's just to coefficients, with everything else done in SAS. $\endgroup$
    – Fomite
    Aug 4, 2012 at 14:07
  • $\begingroup$ You'll find the survival analysis capabilities of R to be ahead of those in SAS. $\endgroup$ Aug 4, 2012 at 14:30
  • $\begingroup$ Agreed - hence 'on the list to translate', but I don't know R nearly as well, and while this bit is easy, the extended parts of the project are considerably more complicated, and have existing implementations in SAS. $\endgroup$
    – Fomite
    Aug 4, 2012 at 14:37

In case someone really does want the mean survival time as originally asked, it's $e^{\mu+{\sigma^2\over 2}}$. (In fact, the original poster should carefully consider whether they want the mean or the median for their use of the resulting number. For the example given with $\sigma=1.1$, the mean is almost twice the median.)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.