Modelerrors en toeval

Introductie tot lineaire modellering in Python

Jason Vestuto

Data Scientist

Soorten fouten

  1. Meetfout
    • bijv.: kapotte sensor, verkeerd genoteerde metingen
  2. Steekproefbias
    • bijv.: temperaturen alleen uit augustus, als het het warmst is
  3. Toeval
Introductie tot lineaire modellering in Python

Nulhypothese

Vraag: Komt ons effect door een relatie of door toeval?

Antwoord: controleer de nulhypothese.

Introductie tot lineaire modellering in Python

Geordende data

Spreidingsdiagram van wandeldata, met op de assen afgelegde afstand in mijlen en duur in uren

Introductie tot lineaire modellering in Python

Data groeperen

Spreidingsdiagram van wandeldata, met op de assen afstand in mijlen en duur in uren, met tijden < 5 uur in rood en > 5 uur in blauw

Introductie tot lineaire modellering in Python

Data groeperen

Twee histogrammen, beide ongeveer klokvormig: rood voor korte tochten, gecentreerd rond 5 mijl, en blauw voor lange tochten, rond 15 mijl

  • Groep korte duur, gemiddelde = 5
  • Groep lange duur, gemiddelde = 15
Introductie tot lineaire modellering in Python

Toetsingsgrootheid

# 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)
Introductie tot lineaire modellering in Python

Shuffelen en hergroeperen

Spreidingsdiagram van wandeldata, met op de assen afstand in mijlen en duur in uren, waarbij rood en blauw door alle tijden heen door elkaar staan

Introductie tot lineaire modellering in Python

Shuffelen en hergroeperen

2 histogrammen die bijna volledig overlappen, bereik 0–25 mijl, met ongeveer dezelfde vorm

Introductie tot lineaire modellering in Python

Shuffelen en splitsen

# 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:]
Introductie tot lineaire modellering in Python

Opnieuw steekproeven en testen

# 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)
Introductie tot lineaire modellering in Python

p-waarde

Histogrammen met op de assen bintellingen versus waarden van de toetsingsgrootheid: één blauw, gecentreerd op x=0 met brede spreiding, en één rood, gecentreerd op x=10 met smallere spreiding, plus een verticale zwarte lijn bij x=10

Introductie tot lineaire modellering in Python

Laten we oefenen!

Introductie tot lineaire modellering in Python

Preparing Video For Download...