Configurer des expériences

Conception expérimentale en Python

James Chapman

Curriculum Manager, DataCamp

Définition du plan d'expériences

 

  • Un processus
  • Une approche objective et contrôlée
  • Tirer des conclusions précises
    • Par rapport à une hypothèse

experimental-design.png

1 https://www.sciencedirect.com/topics/earth-and-planetary-sciences/experimental-design
Conception expérimentale en Python

Formuler des énoncés robustes

X a probablement eu un effet sur Y. Il y a sans doute un petit risque d'erreur

 

  • Langage précis et quantifié

L'analyse de la p-valeur indique que X a eu un effet sur Y avec 10 % de risque d'erreur de type I

  • Erreur de type I : rejet à tort de l'hypothèse nulle

 

  • Objectif : plan d'expériences et analyse statistique
Conception expérimentale en Python

Pourquoi le plan d'expériences ?

 

Utile dans de nombreux domaines :

  • Recherche médicale
  • Marketing
  • Analytique produit
  • Agriculture
  • Politiques publiques

why.png

Conception expérimentale en Python

Quelques termes...

     

  • Sujets = ce sur quoi on expérimente (personnes, employés, utilisateurs, etc.)

Un sujet : une personne ici.

Conception expérimentale en Python

Quelques termes...

     

  • Sujets = ce sur quoi on expérimente (personnes, employés, utilisateurs, etc.)
  • Traitement = un changement appliqué à un groupe

Un traitement appliqué à un groupe de sujets.

Conception expérimentale en Python

Quelques termes...

     

  • Sujets = ce sur quoi on expérimente (personnes, employés, utilisateurs, etc.)
  • Traitement = un changement appliqué à un groupe

Un traitement appliqué à un groupe traité.

Conception expérimentale en Python

Quelques termes...

     

  • Sujets = ce sur quoi on expérimente (personnes, employés, utilisateurs, etc.)
  • Traitement = un changement appliqué à un groupe
  • Contrôle = le groupe sans changement

Sujets divisés en groupes traitement et contrôle.

Conception expérimentale en Python

Répartir les sujets en groupes

     

  • Comment répartir les sujets en groupes ?
    • Option 1 - non aléatoire (« scinder » le DataFrame)
    • Option 2 - assignation aléatoire

     

  • Exemple : 200 tailles dans le DataFrame heights
    id  height
0    0  177.98
1    1  174.17
2    2  178.89
Conception expérimentale en Python

Répartition non aléatoire

 

Répartition par slicing du DataFrame

group1_nonrandom = heights.iloc[0:100,:]
group2_nonrandom = heights.iloc[100:,:]

compare_df = pd.concat( [group1_nonrandom['height'].describe(), group2_nonrandom['height'].describe()], axis=1) compare_df.columns = ['group1', 'group2'] print(compare_df)
  • Très différent ! (moyenne écart de 9 cm)

 

 

       group1  group2
count  100.00  100.00
mean   170.32  179.19 <--
std      3.28    3.50
min    159.28  175.03
25%    168.06  176.57
50%    170.75  178.03
75%    173.09  180.79
max    174.92  191.32
Conception expérimentale en Python

Assignation aléatoire

     

  • Utiliser .sample()
    • n ou frac (fraction 0–1)
group1 = heights.sample(frac=0.5,
                        replace=False,
                        random_state=42)

group2 = heights.drop(group1.index)
print(compare_df)
  • Bien plus proche ! (<1 cm)

 

       group1  group2
count  100.00  100.00
mean   175.10  174.41 <--
std      5.39    5.78
min    163.07  159.28
25%    171.32  170.17
50%    175.22  174.86
75%    178.32  177.85
max    189.78  191.32
Conception expérimentale en Python

Résumé de la répartition

 

  • Les sujets doivent être répartis de façon aléatoire
    • Pour attribuer correctement les effets observés

 

  • Assignation aléatoire des sujets : .sample()
  • Vérifier les différences : .describe()

Sujets répartis aléatoirement en traitement et contrôle.

Conception expérimentale en Python

Passons à la pratique !

Conception expérimentale en Python

Preparing Video For Download...