The problem: I am trying to estimate the lifetime value of a group of customers with on-going  contracts. This would be trivial if I had a dataset where all the contracts had run their course, but these are contracts that are running for years, and I simply cannot wait for years to conduct an "easy" calculation. I need to estimate the lifetime value now.

I have tried to scour the internet for an answer, from common statistical formulas to scientific studies. The crux of the problem is that my dataset is biased. The contracts that "die" early by definition did not live longer.

The contracts are continuous contracts that can be terminated at any time. Every month, a couple of new contracts start, and occasionally some end, and they form a dataset. If, say, all the contracts signed in 2020 were already dead, I could simply calculate mean lifetime. However, 90 % of the contracts signed in 2020 are still alive and kicking.

The average length of a contract is 342 days. (All live and ended ones.) The average lenght of a dead contract is 424 days. But because of the contracts started in 2020, only about 10 % have actually ended, the average lifetime is surely much, much more than 424 days.

The question:

Is there some kind of a formula where I could project how these contracts will die in the future? Especially if some kind of normal distribution assumption is made? The estimate does not have to be accurate to the last decimal point, but I would like to be in the ballpark. (i.e. , if the "true" mean lifetime is 10 years, its ok if the esitmate is 8 or 12, but not if its 2 or 20.) Using right censoring at this point would probably completely destroy the estimate, since I have so, so few "complete" observations.

The data:

I have attached a part of the dataset below. I know its a bit of a messy implementation, but the "start to now" column calculates the amount of days from start to today, while the days to end calculates from start to the end date. The "MIN" column takes whichever is smaller, allowing me to calculate means for all contract lenghts that dont count dead contracts as living.

enter image description here


1 Answer 1


Using right censoring at this point would probably completely destroy the estimate, since I have so, so few "complete" observations.

That's not correct. In fact, treating this like a standard censored survival problem is probably the best you can do.

Survival analysis, based on markers for each case of whether the last observation time was an "event" (contract died) or censored (contract still in place), takes advantage of all of the data that you have without introducing the bias, that you rightly note, that comes from things like simply taking the average observation times.

Now, you still might have a problem in that the mix of cases only gets you down to, say, something like 80% "survival" at a contract length of 3 years. That won't give you an estimate of things like median survival (survival time at which 50% of contracts have died) or a true mean survival.

That leaves you with a couple of choices. One is to calculate a "restricted mean survival": the mean survival out to some fixed survival time that is actually covered by your data, but not trying to go beyond that. That can be inherently unsatisfying, but might be good enough for your business purposes if it sets a useful lower limit to true mean survival.

An alternative is to make some distributional assumption, like the "some kind of normal distribution assumption" you propose. You do a parametric survival regression, taking censoring into account, based on assuming a particular distribution of survival times like Weibull, gamma, log-normal, or log-logistic. That's implemented in standard statistical software. You effectively end up with an equation for survival over time that can be used to estimate things like median and mean survival times, and corresponding error estimates, that would hold if your choice of survival-time distributional form is correct.

Such extrapolation is necessarily risky. For one, the limited early data might not provide enough information about the correct parametric form to choose. For another, no simple parametric form might work. Maybe most important, changes in the underlying structure might happen. How many business predictions made in pre-Covid in 2019 still hold in 2021?

  • $\begingroup$ Thank you for your response. By "conditional mean analysis", do you mean "Kaplar-Meier Estimate"? I tried to look for an example on the internet, but that is the only thing I found. It is prudent to be conservative in estimates in business, so a tool like that could be a good start. I would like to perform both of your suggestions, since for my business it would be helpful to have a reliable lower limit to the mean survival, but also a more speculative but not completely unfounded estimate of the mean. Is Cox regression an example of the parametric survival regression you mentioned? $\endgroup$
    – Munakoiso
    Oct 27, 2021 at 7:16
  • $\begingroup$ @Munakoiso sorry I meant to write "restricted mean survival" and will edit to correct that. That can be calculated from Kaplan-Meier estimates and should be easy to search for. A Cox regression does not extrapolate beyond the last event time. For extrapolation you need to do a parametric survival regression, for example with the survreg() function in the R survival package. You have to pick a particular family shape to fit for the baseline survival function, e.g. Weibull, log-normal, log-logistic. $\endgroup$
    – EdM
    Oct 27, 2021 at 13:20

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.