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

Conception d'expériences 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 traitées avec des engrais différents ont poussé à des hauteurs différentes. Une flèche indique l'écart de hauteur pour représenter la taille d'effet.

Conception d'expériences en Python

L'ensemble de données : engagement dans les jeux vidéo

  • 60 participant(e)s
    • 30 assigné(e)s au hasard à Action
    • 30 assigné(e)s au hasard à 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 d'expériences en Python

Aperçu du calcul de la puissance

  • Puissance : probabilité de rejeter correctement une hypothèse nulle fausse : ($1 - \beta$)

    • Entre 0 et 1 (certitude de détecter un effet réel)
  • Supposer effect_size=1 d'après des données historiques

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 d'expériences 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 d'expériences en Python

d de Cohen pour les données de jeu 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 d'expériences en Python

Comprendre la taille d'échantillon et la puissance

  • Compromis entre puissance et taille d'échantillon
  • Des échantillons plus grands augmentent la puissance

Taille d'échantillon vs puissance statistique.png

1 https://grabngoinfo.com/power-analysis-for-sample-size-using-python/
Conception d'expériences 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 d'expériences en Python

Visualiser les tailles d'échantillon requises

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('Taille d\'effet vs taille d\'échantillon requise')
plt.xlabel('Taille d\'effet (d de Cohen)')
plt.ylabel('Taille d\'échantillon requise')
plt.grid(True)
plt.show()
Conception d'expériences en Python

Visualiser les tailles d'échantillon requises

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

Conception d'expériences en Python

Passons à la pratique !

Conception d'expériences en Python

Preparing Video For Download...