Erreurs de modèle et hasard

Introduction aux modèles linéaires en Python

Jason Vestuto

Data Scientist

Types d'erreurs

  1. Erreur de mesure
    • p. ex. : capteur défectueux, mesures mal consignées
  2. Biais d'échantillonnage
    • p. ex. : températures seulement en août, quand les journées sont les plus chaudes
  3. Hasard
Introduction aux modèles linéaires en Python

Hypothèse nulle

Question : notre effet vient-il d'une relation ou du hasard ?

Réponse : vérifier l'hypothèse nulle.

Introduction aux modèles linéaires en Python

Données ordonnées

Nuage de points de données de randonnée, distance parcourue (milles) en fonction de la durée (heures)

Introduction aux modèles linéaires en Python

Regrouper les données

Nuage de points des randonnées, distance (milles) vs durée (heures), en rouge < 5 h et en bleu > 5 h

Introduction aux modèles linéaires en Python

Regrouper les données

Deux histogrammes en cloche, rouge pour durées courtes centré près de 5 milles, bleu pour durées longues centré près de 15 milles

  • Groupe « durée courte », moyenne = 5
  • Groupe « durée longue », moyenne = 15
Introduction aux modèles linéaires en Python

Statistique de test

# Group into early and late times
group_short = sample_distances[times < 5]
group_long = sample_distances[times > 5]
# Resample distributions
resample_short = np.random.choice(group_short, size=500, replace=True)
resample_long = np.random.choice(group_long, size=500, replace=True)
# Test Statistic
test_statistic = resample_long - resample_short
# Effect size as mean of test statistic distribution
effect_size = np.mean(test_statistic)
Introduction aux modèles linéaires en Python

Mélanger et regrouper de nouveau

Nuage de points des randonnées, distance (milles) vs durée (heures), rouge et bleu mêlés pour toutes les durées

Introduction aux modèles linéaires en Python

Mélanger et regrouper

Deux histogrammes presque entièrement superposés, de 0 à 25 milles, formes semblables

Introduction aux modèles linéaires en Python

Mélanger et scinder

# Concatenate and Shuffle
shuffle_bucket = np.concatenate((group_short, group_long))
np.random.shuffle(shuffle_bucket)
# Split in the middle
slice_index = len(shuffle_bucket)//2
shuffled_half1 = shuffle_bucket[0:slice_index]
shuffled_half2 = shuffle_bucket[slice_index+1:]
Introduction aux modèles linéaires en Python

Rééchantillonner et tester encore

# Resample shuffled populations
shuffled_sample1 = np.random.choice(shuffled_half1, size=500, replace=True)
shuffled_sample2 = np.random.choice(shuffled_half2, size=500, replace=True)
# Recompute effect size
shuffled_test_statistic = shuffled_sample2 - shuffled_sample1
effect_size = np.mean(shuffled_test_statistic)
Introduction aux modèles linéaires en Python

Valeur p

Deux histogrammes des valeurs de la statistique de test : bleu centré à x=0 (large), rouge centré à x=10 (plus étroit), ligne verticale noire à x=10

Introduction aux modèles linéaires en Python

Passons à la pratique !

Introduction aux modèles linéaires en Python

Preparing Video For Download...