Poweranalyse: steekproef- en effectgrootte

Experimenteel ontwerpen in Python

James Chapman

Curriculum Manager, DataCamp

Wat is effectgrootte?

 

  • Effectgrootte: kwantificeert het verschil tussen twee groepen

 

  • Cohen’s d: standaardmaat voor effectgrootte

Twee planten behandeld met verschillende meststoffen zijn verschillend gegroeid. Een pijl geeft het hoogteverschil aan om de effectgrootte te tonen.

Experimenteel ontwerpen in Python

De dataset: videogamebetrokkenheid

  • 60 deelnemers
    • 30 willekeurig naar Action
    • 30 willekeurig naar 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
Experimenteel ontwerpen in Python

Power berekenen: overzicht

  • Power: kans om een valse nulhypothese correct te verwerpen: (1 − β)

    • Ligt tussen 0 en 1 (zekerheid om een echt effect te detecteren)
  • Neem effect_size=1 aan op basis van historische data

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
Experimenteel ontwerpen in Python

Formule voor 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 standaarddeviatie: $\sigma_{p} = \sqrt{\frac{(n_1 - 1) \times \text{var}_1 + (n_2 - 1) \times \text{var}_2}{n_1 + n_2 - 2}}$

Experimenteel ontwerpen in Python

Cohen’s d voor videogamedata

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
Experimenteel ontwerpen in Python

Steekproefgrootte en power begrijpen

  • Afweging tussen power en steekproefgrootte
  • Grotere steekproeven verhogen de power

Steekproefgrootte vs. statistische power.png

1 https://grabngoinfo.com/power-analysis-for-sample-size-using-python/
Experimenteel ontwerpen in Python

Steekproefgrootte berekenen in context

  • Responsvariabele: 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
Experimenteel ontwerpen in Python

Vereiste steekproefgrootte visualiseren

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()
Experimenteel ontwerpen in Python

Vereiste steekproefgrootte visualiseren

Effectgrootte vs. vereiste steekproefgrootte.png

Experimenteel ontwerpen in Python

Laten we oefenen!

Experimenteel ontwerpen in Python

Preparing Video For Download...