Toetsen van hypothesen - Verschil in gemiddelden
We willen de hypothese toetsen dat er een verschil is in de gemiddelde donaties die zijn ontvangen van A en B. Eerder heb je geleerd hoe je één permutatie van de data kunt genereren. Nu genereren we een nulverdeling van het verschil in gemiddelden en berekenen we vervolgens de p-waarde.
Voor de nulverdeling genereren we eerst meerdere gepermuteerde gegevenssets en slaan we het verschil in gemiddelden voor elk geval op. Vervolgens berekenen we de toetsingsgrootheid als het verschil in gemiddelden met de oorspronkelijke gegevensset. Ten slotte benaderen we de p-waarde door twee keer het aandeel gevallen te nemen waarin het verschil groter is dan of gelijk is aan de absolute waarde van de toetsingsgrootheid (tweezijdige hypothese). Een p-waarde kleiner dan bijvoorbeeld 0,05 kan dan wijzen op statistische significantie.
Deze oefening maakt deel uit van de cursus
Statisticale simulatie in Python
Oefeninstructies
- Genereer meerdere permutaties van
donations_A&donations_Ben ken dit toe aanperm. - Zet
samplesgelijk aan het verschil in gemiddelden vanpermuted_A_datasets&permuted_B_datasets. We zettenaxis=1zodat je een gemiddelde per gegevensset krijgt in plaats van één overall gemiddelde. - Zet
test_statgelijk aan het verschil in gemiddelden vandonations_A&donations_B. - Bereken de p-waarde
p_valals twee keer het aandeel vansamplesdat groter is dan of gelijk is aan de absolute waarde vantest_stat.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Generate permutations equal to the number of repetitions
perm = np.array([np.random.____(len(____) + len(____)) for i in range(reps)])
permuted_A_datasets = data[perm[:, :len(donations_A)]]
permuted_B_datasets = data[perm[:, len(donations_A):]]
# Calculate the difference in means for each of the datasets
samples = np.mean(____, axis=1) - np.mean(____, axis=1)
# Calculate the test statistic and p-value
test_stat = ____
p_val = 2*np.sum(____ >= np.abs(____))/reps
print("p-value = {}".format(p_val))