Power-Analyse: Stichprobe und Effektgröße

Versuchsplanung mit Python

James Chapman

Curriculum Manager, DataCamp

Einführung in die Effektgröße

 

  • Effektgröße: Quantifiziert den Unterschied zwischen zwei Gruppen

 

  • Cohen's d: Standardmaß für Effektgrößen

Zwei Pflanzen mit unterschiedlichen Düngern, die verschieden hoch gewachsen sind. Ein Pfeil zeigt die Höhendifferenz als Effektgröße.

Versuchsplanung mit Python

Datensatz: Videospiel-Engagement

  • 60 Teilnehmende
    • 30 zufällig zugewiesen zu Action
    • 30 zufällig zugewiesen zu Puzzle
video_game_data.head()
   Game_Genre  Engagement_Time
0      Action              5.1
1      Puzzle              4.4
2      Action              7.2
3      Action              5.3
4      Puzzle              2.7
Versuchsplanung mit Python

Power berechnen: Überblick

  • Power: Wahrscheinlichkeit, eine falsche Nullhypothese korrekt zu verwerfen: (1 − β)

    • Liegt zwischen 0 und 1 (Sicherheit, einen echten Effekt zu finden)
  • Angenommen effect_size=1 aus historischen Daten

from statsmodels.stats.power import TTestIndPower
power_analysis = TTestIndPower()

power = power_analysis.solve_power(effect_size=1, nobs1=30, alpha=0.05) print(power)
0.9677082519951168
Versuchsplanung mit Python

Formel für Cohen's d

def cohens_d(group1, group2):

diff = group1.mean() - group2.mean() n1, n2 = len(group1), len(group2) var1, var2 = group1.var(), group2.var()
pooled_std = np.sqrt(((n1 - 1) * var1 + (n2 - 1) * var2) / (n1 + n2 - 2))
d = diff / pooled_std return d

Pooled Standardabweichung: $\sigma_{p} = \sqrt{\frac{(n_1 - 1) \times \text{var}_1 + (n_2 - 1) \times \text{var}_2}{n_1 + n_2 - 2}}$

Versuchsplanung mit Python

Cohen's d für Videospieldaten

action_times = video_game_data[video_game_data['Game_Genre'] == 'Action']['Engagement_Time']
puzzle_times = video_game_data[video_game_data['Game_Genre'] == 'Puzzle']['Engagement_Time']

d = cohens_d(action_times, puzzle_times) print(f"Cohen's d: {d}")
Cohen's d: 1.161524633221452
Versuchsplanung mit Python

Stichprobengröße und Power verstehen

  • Trade-off zwischen Power und Stichprobengröße
  • Größere Stichproben erhöhen die Power

Stichprobengröße vs. statistische Power.png

1 https://grabngoinfo.com/power-analysis-for-sample-size-using-python/
Versuchsplanung mit Python

Stichprobengröße im Kontext berechnen

  • Zielvariable: engagement_time
from statsmodels.stats.power import TTestIndPower
power_analysis = TTestIndPower()
required_n = power_analysis.solve_power(effect_size=d, alpha=0.05, 
                                        power=0.99, ratio=1)
print(required_n)
28.237827708942007
Versuchsplanung mit Python

Bedarfsgrößen visualisieren

import numpy as np
import matplotlib.pyplot as plt
effect_sizes = np.linspace(0.1, 0.8, 8)
sample_sizes = [power_analysis.solve_power(effect_size=es, alpha=0.05, power=0.99, 
                                           ratio=1) for es in effect_sizes]

plt.figure(figsize=(10, 6))
plt.plot(effect_sizes, sample_sizes, 'o-')
plt.title('Effect Size vs. Required Sample Size')
plt.xlabel('Effect Size (Cohen\'s d)')
plt.ylabel('Required Sample Size')
plt.grid(True)
plt.show()
Versuchsplanung mit Python

Bedarfsgrößen visualisieren

Effektgröße vs. erforderliche Stichprobengröße.png

Versuchsplanung mit Python

Lass uns üben!

Versuchsplanung mit Python

Preparing Video For Download...