12 · Regressionsmodelle: Lineare, logistische und Cox-Regression
km_ueberleben_sepsis.png
Abbildung · Quellcode

Erzeugt im Abschnitt „km_ueberleben_sepsis" in data/figures.py, Zeile 512–553.
Dieses Skript läuft von oben nach unten. Der gemeinsame Vorspann — Bibliotheken, Kohorte laden, Plot-Stil — steht am Anfang der vollständigen Datei und gilt für alle Abbildungen darin.
Python
Python-Code: in eine Datei mit Endung
.py schreiben und mit dem ▶-Knopf in VS Code ausführen – oder Zeile für Zeile in die Python-Konsole. Setzt die in Modul 02 eingerichtete Umgebung voraus.# --- Kaplan-Meier curve --- from lifelines import KaplanMeierFitter fig, ax = plt.subplots(figsize=(8, 5)) kmf = KaplanMeierFitter() for group, color, label in [ ("Sepsis", EVENT, "Sepsis"), ("Nicht-Sepsis", PRIMARY, "Nicht-Sepsis"), ]: mask = df["sepsis_gruppe"] == group kmf.fit( df.loc[mask, "fu_zeit_tage"], df.loc[mask, "status"], label=label, ) kmf.plot_survival_function( ax=ax, ci_show=True, ci_alpha=0.15, color=color, linewidth=2.0, ) ax.set_xlabel("Zeit (Tage)") ax.set_ylabel("Geschätzte Überlebenswahrscheinlichkeit") ax.set_title("Kaplan-Meier-Überlebensfunktion\nStratifiziert nach Aufnahmegrund (Sepsis vs. Nicht-Sepsis)") ax.set_ylim(0, 1.05) ax.yaxis.set_major_formatter(mticker.PercentFormatter(xmax=1, decimals=0)) # Log-rank test from lifelines.statistics import logrank_test lr_result = logrank_test( df.loc[df["sepsis_gruppe"] == "Sepsis", "fu_zeit_tage"], df.loc[df["sepsis_gruppe"] == "Nicht-Sepsis", "fu_zeit_tage"], event_observed_A=df.loc[df["sepsis_gruppe"] == "Sepsis", "status"], event_observed_B=df.loc[df["sepsis_gruppe"] == "Nicht-Sepsis", "status"], ) p_lr = lr_result.p_value p_txt = f"Log-rank p = {p_lr:.4f}" if p_lr >= 0.0001 else "Log-rank p < 0.0001" ax.text(0.97, 0.97, p_txt, transform=ax.transAxes, ha="right", va="top", fontsize=10, bbox=dict(boxstyle="round,pad=0.3", facecolor="#F0F4F8", edgecolor="none")) save(fig, ASSETS / "12-regression" / "assets" / "km_ueberleben_sepsis.png")