Analyse de puissance : taille d'échantillon et d'effet

Conception expérimentale en Python

James Chapman

Curriculum Manager, DataCamp

Introduction à la taille d'effet

 

  • Taille d'effet : quantifie l'écart entre deux groupes

 

  • d de Cohen : mesure standard de la taille d'effet

Deux plantes avec des engrais différents, de tailles différentes. Une flèche indique l'écart de hauteur pour illustrer la taille d'effet.

Conception expérimentale en Python

Jeux vidéo : engagement du jeu (jeu de données)

  • 60 participants
    • 30 affectés aléatoirement à Action
    • 30 affectés aléatoirement à 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
Conception expérimentale en Python

Vue d'ensemble du calcul de puissance

  • Puissance : probabilité de rejeter correctement l'hypothèse nulle fausse (1 − β)

    • Entre 0 et 1 (capacité à détecter un vrai effet)
  • Supposons effect_size=1 d'après l'historique

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
Conception expérimentale en Python

Formulation du d de Cohen

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

Écart-type combiné : $\sigma_{p} = \sqrt{\frac{(n_1 - 1) \times \text{var}_1 + (n_2 - 1) \times \text{var}_2}{n_1 + n_2 - 2}}$

Conception expérimentale en Python

d de Cohen pour les jeux vidéo

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
Conception expérimentale en Python

Comprendre taille d'échantillon et puissance

  • Arbitrage entre puissance et taille d'échantillon
  • Plus l'échantillon est grand, plus la puissance augmente

Taille d'échantillon vs. puissance statistique.png

1 https://grabngoinfo.com/power-analysis-for-sample-size-using-python/
Conception expérimentale en Python

Calcul de la taille d'échantillon en contexte

  • Variable de réponse : 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
Conception expérimentale en Python

Visualiser les besoins en taille d'échantillon

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()
Conception expérimentale en Python

Visualiser les besoins en taille d'échantillon

Taille d'effet vs. taille d'échantillon requise.png

Conception expérimentale en Python

Passons à la pratique !

Conception expérimentale en Python

Preparing Video For Download...