Быстрый старт: Выживаемость и Фарма
От установки до первого Cox PH за 3 минуты
Этот гайд проведёт вас через анализ выживаемости в NextStat — кривые Каплана-Мейера, лог-ранк тест и модель Кокса — на Python. Никаких ROOT или ФВЭ-знаний не требуется.
1. Установка
pip install nextstat
2. Подготовка данных
Для анализа выживаемости нужны три массива: времена наблюдений, индикаторы событий (1 = событие, 0 = цензурирование) и опционально матрица ковариат.
import numpy as np # Пример: 200 пациентов, 3 ковариаты np.random.seed(42) n = 200 times = np.random.exponential(10, n) events = np.random.binomial(1, 0.7, n) x = np.random.randn(n, 3) # возраст, дозировка, биомаркер
3. Кривая Каплана-Мейера
import nextstat
km = nextstat.kaplan_meier(times, events, conf_level=0.95)
print(f"N = {km['n']}, событий = {km['n_events']}")
print(f"Медианная выживаемость: {km['median']:.2f}")
# Шаги кривой с доверительными интервалами
for t, s, lo, hi in zip(km['time'][:5], km['survival'][:5],
km['ci_lower'][:5], km['ci_upper'][:5]):
print(f" t={t:.2f} S(t)={s:.3f} 95% ДИ [{lo:.3f}, {hi:.3f}]")4. Лог-ранк тест
Сравнение выживаемости между двумя группами (напр. лечение vs контроль).
groups = np.where(x[:, 1] > 0, "treatment", "control")
lr = nextstat.log_rank_test(times, events, groups)
print(f"chi² = {lr['chi_squared']:.2f}, p = {lr['p_value']:.4f}")5. Модель Кокса (Cox PH)
import nextstat.survival as surv
fit = surv.cox_ph.fit(
times, events, x,
ties="efron",
robust=True,
)
print("Лог-отношения рисков:", fit.params)
print("Робастные SE:", fit.robust_se)
print("ДИ для hazard ratios:")
print(fit.hazard_ratio_confint())6. Диагностика
# Проверка предположения пропорциональных рисков
residuals = surv.schoenfeld_residuals(fit)
# Индекс конкордации
print(f"C-index: {fit.concordance:.3f}")Следующие шаги
- Полный Survival API — параметрические модели (Weibull, LogNormal AFT), стратификация
- Churn-аналитика — подписочная выживаемость, кривые удержания
- Гайд Bio & Pharma — PK/NLME, процессы клинических исследований
- Бенчмарки — производительность survival vs lifelines, R survival
