13 · Studiendesign und Fallzahlplanung
studiendesign_power.png
Abbildung · Quellcode

Erzeugt im Abschnitt „MODULE 13 · Study Design & Power" in data/figures.py, Zeile 588–623.
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.# =========================================================================== # MODULE 13 · Study Design & Power # =========================================================================== print("[13] Studiendesign & Power ...") n_range = np.arange(10, 200, 2) from statsmodels.stats.power import TTestIndPower power_analysis = TTestIndPower() power_d3 = [power_analysis.solve_power(effect_size=0.3, nobs1=n, alpha=0.05) for n in n_range] power_d5 = [power_analysis.solve_power(effect_size=0.5, nobs1=n, alpha=0.05) for n in n_range] fig, ax = plt.subplots(figsize=(8, 4.5)) ax.plot(n_range, power_d3, color=SECONDARY, linewidth=2, label="Kleiner Effekt (Cohen's d = 0.3)") ax.plot(n_range, power_d5, color=PRIMARY, linewidth=2.5, label="Mittlerer Effekt (Cohen's d = 0.5)") # Target power line (80%) ax.axhline(0.80, color=EVENT, linestyle="--", linewidth=1.2, label="Soll-Power (80 %)") # Find exact N for d=0.5 at 80% power n_target = power_analysis.solve_power(effect_size=0.5, power=0.80, alpha=0.05) ax.axvline(n_target, color=EVENT, linestyle=":", linewidth=1.2) ax.plot(n_target, 0.80, "o", color=EVENT, markersize=8) ax.text(n_target + 5, 0.72, f"N = {int(np.ceil(n_target))} pro Gruppe\nfür 80 % Power", color=EVENT, fontsize=9.5, fontweight="semibold") ax.set_xlabel("Stichprobengröße pro Gruppe (N)") ax.set_ylabel("Statistische Power (1 − β)") ax.set_title("Power-Kurve: Stichprobengröße vs. Power (Alpha = 0.05)") ax.set_ylim(0, 1.05) ax.set_xlim(10, 200) ax.legend(loc="lower right") ax.grid(True, linestyle=":", alpha=0.6) # Ensure directory exists before saving (ASSETS / "13-studiendesign-power" / "assets").mkdir(parents=True, exist_ok=True) save(fig, ASSETS / "13-studiendesign-power" / "assets" / "studiendesign_power.png")