, event_observed=None, timeline=None, entry=None, label=None, alpha=None, ci_labels=None, weights=None, censoring=None)[source]#

Fit the Kaplan-Meier estimate for the survival function.

The Kaplan–Meier estimator, also known as the product limit estimator, is a non-parametric statistic used to estimate the survival function from lifetime data. In medical research, it is often used to measure the fraction of patients living for a certain amount of time after treatment.


  • durations (Iterable) – length n – duration (relative to subject’s birth) the subject was alive for.

  • event_observed (Iterable | None) – True if the death was observed, False if the event was lost (right-censored). Defaults to all True if event_observed==None.

  • timeline (Iterable) – return the best estimate at the values in timelines (positively increasing)

  • entry (Iterable | None) – Relative time when a subject entered the study. This is useful for left-truncated (not left-censored) observations. If None, all members of the population entered study when they were “born”.

  • label (str | None) – A string to name the column of the estimate.

  • alpha (float | None) – The alpha value in the confidence intervals. Overrides the initializing alpha for this call to fit only.

  • ci_labels (tuple[str, str]) – Add custom column names to the generated confidence intervals as a length-2 list: [<lower-bound name>, <upper-bound name>] (default: <label>_lower_<1-alpha/2>).

  • weights (Iterable | None) – If providing a weighted dataset. For example, instead of providing every subject as a single element of durations and event_observed, one could weigh subject differently.

  • censoring (Literal['right', 'left']) – ‘right’ for fitting the model to a right-censored dataset. ‘left’ for fitting the model to a left-censored dataset (default: fit the model to a right-censored dataset).

Return type:



Fitted KaplanMeierFitter


>>> import ehrapy as ep
>>> adata = ep.dt.mimic_2(encoded=False)
>>> # Flip 'censor_fl' because 0 = death and 1 = censored
>>> adata[:, ["censor_flg"]].X = np.where(adata[:, ["censor_flg"]].X == 0, 1, 0)
>>> kmf =[:, ["mort_day_censored"]].X, adata[:, ["censor_flg"]].X)