# Lifelines

> Complete survival analysis library in Python. Handles right-censored data, Kaplan-Meier curves, and Cox regression. Standard for clinical trial analysis and epidemiology. Use when this capability is needed.

- Skill: `tomevault-io/lifelines` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/lifelines`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/lifelines/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/lifelines

---


# Lifelines - Survival Analysis

In medicine, we often care about "Time to Event" (death, recovery, relapse). Lifelines handles the complexity of "censored" data (patients who left the study).

## When to Use

- Analyzing clinical trial data (time to death, disease progression).
- Comparing survival between treatment groups.
- Identifying risk factors using Cox Proportional Hazards regression.
- Building survival models for prognosis.
- Epidemiology studies (time to infection, recovery).

## Core Principles

### Censoring

Patients who haven't experienced the event by the end of the study are "censored". Lifelines properly accounts for this.

### Hazard Ratios

In Cox regression, a hazard ratio > 1 means increased risk; < 1 means decreased risk.

### Survival Curves

Kaplan-Meier estimates the probability of survival over time without assuming a distribution.

## Quick Reference

### Standard Imports

```python
from lifelines import KaplanMeierFitter, CoxPHFitter
from lifelines.statistics import logrank_test
import pandas as pd
```

### Basic Patterns

```python
# 1. Kaplan-Meier (Visualizing survival)
kmf = KaplanMeierFitter()
kmf.fit(durations=df['days'], event_observed=df['died'])
kmf.plot_survival_function()
kmf.median_survival_time_  # Time when 50% have died

# 2. Cox Proportional Hazards (Risk factors)
cph = CoxPHFitter()
cph.fit(df, duration_col='days', event_col='died')
cph.print_summary() # See hazard ratios for age, drug type, etc.
cph.plot_partial_effects_on_outcome(covariates=['age'], values=[30, 50, 70])
```

## Critical Rules

### ✅ DO

- **Use event_observed correctly** - 1 = event occurred, 0 = censored.
- **Check proportional hazards assumption** - Use `cph.check_assumptions()` to validate Cox model.
- **Compare groups with logrank test** - Statistical test for survival curve differences.
- **Plot confidence intervals** - Survival estimates have uncertainty, especially with small samples.

### ❌ DON'T

- **Don't ignore censoring** - Treating censored patients as "survived" biases results.
- **Don't use regular regression** - Time-to-event data requires specialized methods.
- **Don't assume proportional hazards** - If violated, use stratified Cox or parametric models.

## Advanced Patterns

### Comparing Multiple Groups

```python
from lifelines.statistics import multivariate_logrank_test

# Compare survival across treatment groups
results = multivariate_logrank_test(df['days'], df['group'], df['died'])
print(results.p_value)
```

### Parametric Models

```python
from lifelines import WeibullFitter, ExponentialFitter

# When you need to extrapolate beyond observed data
wf = WeibullFitter()
wf.fit(df['days'], df['died'])
wf.plot()
```

Lifelines transforms complex survival data into actionable medical insights, enabling evidence-based decisions in clinical research and practice.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/tondevrel) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-13 -->

