Mood’s mediaan toets
Contents
19. Mood’s mediaan toets#
19.1. Toepassing#
Gebruik Mood’s mediaan toets om te toetsen of de medianen van twee ongepaarde groepen van elkaar verschillen.1,2 Deze toets is een alternatief voor de ongepaarde t-toets als een van de of beide ongepaarde groepen niet normaal verdeeld zijn. Mood’s mediaan toets kan ook gebruikt worden om medianen van meer dan twee ongepaarde groepen te vergelijken. Deze toetspagina illustreert de toets echter voor twee ongepaarde groepen.
Naast Mood’s mediaan toets kan de Mann-Whitney U toets ook gebruikt worden om het verschil tussen medianen van twee ongepaarde groepen te toetsen. Deze toets heeft een hoger onderscheidend vermogen3,1, maar vereist dat de verdelingen van beide ongepaarde groepen dezelfde vorm hebben.4 Mood’s mediaan toets kan ook gebruikt worden als de verdelingen niet dezelfde vorm hebben.
19.2. Onderwijscasus#
Dit onderzoek vertaalt zich in de volgende combinatie van hypothesen, waarbij de nulhypothese zo geformuleerd is dat er geen effect of verschil is en de alternatieve hypothese zo geformuleerd is dat er wel een effect of verschil is.
H0: De verdeling van het behaalde aantal studiepunten in het tweede jaar van studenten met een buitenlandse vooropleiding is hetzelfde als de verdeling van studenten met een Nederlandse vooropleiding.
HA: De verdeling van het behaalde aantal studiepunten in het tweede jaar van studenten met een buitenlandse vooropleiding is anders dan de verdeling van studenten met een Nederlandse vooropleiding.
19.3. Assumpties#
Het meetniveau van de afhankelijke variabele is continu.5,6
19.3.1. Groepsgroottes#
Mood’s mediaan toets toetst het verschil tussen de medianen van twee ongepaarde groepen. Eerst wordt de mediaan berekend van de samengevoegde observaties van beide groepen. Daarna worden voor beide ongepaarde groepen het aantal observaties groter dan en kleiner dan of gelijk aan de mediaan geteld. Dit levert een kruistabel op die vervolgens getoetst kan worden met de Chi-kwadraat toets voor onafhankelijkheid. Een voorbeeld van zo’n kruistabel is te zien in Tabel 1.
Groep 1 |
Groep 2 |
|
|---|---|---|
Aantal observaties groter dan mediaan |
20 |
25 |
Aantal observaties kleiner dan of gelijk aan mediaan |
30 |
40 |
Tabel 1. Kruistabel met aantal observaties groter dan en kleiner dan of gelijk aan mediaan voor twee ongepaarde groepen. |
Een assumptie van de Chi-kwadraat toets voor onafhankelijk is dat niet meer dan 20% van de cellen van de kruistabel een verwacht aantal observaties van vijf of minder heeft. Als dit niet het geval is, is Fisher’s exact toets een beter alternatief. Zie de toetspagina van de Chi-kwadraat toets voor onafhankelijkheid voor een uitgebreide uitleg over deze assumptie.
19.4. Uitvoering#
Er is een dataset dfStudiepunten_studiejaar2 ingeladen met het aantal punten dat studenten in het tweede jaar halen.
19.4.1. De data bekijken#
Gebruik <dataframe>.head() en <dataframe>.tail() om de structuur van de data te bekijken.
# Pandas library importeren
import pandas as pd
## Eerste 6 observaties
print(dfStudiepunten_studiejaar2.head(6))
Studentnummer Studiepunten Vooropleiding
0 3000364 0 Nederlands
1 3000372 57 buitenlands
2 3000548 12 Nederlands
3 3000715 0 buitenlands
4 3000964 42 Nederlands
5 3001081 48 Nederlands
## Laatste 6 observaties
print(dfStudiepunten_studiejaar2.tail(6))
Studentnummer Studiepunten Vooropleiding
1494 3994944 48 Nederlands
1495 3995230 6 buitenlands
1496 3995911 51 Nederlands
1497 3996339 0 Nederlands
1498 3996684 57 buitenlands
1499 3997148 66 buitenlands
Bekijk de grootte, de mediaan en de kwantielen van de data met np.size() en np.quantile(). De mediaan en kwantielen worden vaak gebruikt als maat wanneer een verdeling niet symmetrisch is.
Studiepunten_Nederlands = dfStudiepunten_studiejaar2[dfStudiepunten_studiejaar2["Vooropleiding"] == "Nederlands"]["Studiepunten"]
Studiepunten_buitenlands = dfStudiepunten_studiejaar2[dfStudiepunten_studiejaar2["Vooropleiding"] == "buitenlands"]["Studiepunten"]
import numpy as np
print(np.size(Studiepunten_Nederlands))
print(np.quantile(Studiepunten_Nederlands, [0, 0.25, 0.5, 0.75, 1]))
950
[ 0. 6. 45. 57. 66.]
print(np.size(Studiepunten_buitenlands))
print(np.quantile(Studiepunten_buitenlands, [0, 0.25, 0.5, 0.75, 1]))
550
[ 0. 0. 12. 48. 66.]
vN_NL = len(Studiepunten_Nederlands) vN_Inter = len(Studiepunten_buitenlands)
vQ1_NL = q_NL[1] vQ1_Inter = q_Inter[1]
vQ2_NL = q_NL[2] vQ2_Inter = q_Inter[2]
vQ3_NL = q_NL[3] vQ3_Inter = q_Inter[3]
<!-- ## /CLOSEDBLOK: Data-beschrijven-3.py -->
<!-- ## TEKSTBLOK: Data-beschrijven2.py -->
* Mediaan studenten Nederlandse vooropleiding: `r Round_and_format(py$vQ2_NL)`, *n* = `r py$vN_NL`.
* Mediaan studenten buitenlandse vooropleiding: `r Round_and_format(py$vQ2_Inter)`, *n* = `r py$vN_Inter`.
<!-- ## /TEKSTBLOK: Data-beschrijven2.py -->
19.4.2. De data visualiseren#
Maak een histogram18 om de verdeling van het aantal studiepunten in het tweede jaar voor studenten met een Nederlandse en buitenlandse vooropleiding visueel weer te geven.
## Histogram met matplotlib
import matplotlib.pyplot as plt
fig = plt.figure(figsize = (15, 10))
sub1 = fig.add_subplot(1, 2, 1)
title1 = plt.title("Nederlandse vooropleiding")
hist1 = plt.hist(Studiepunten_Nederlands, density = True, edgecolor = "black", bins = 29)
sub2 = fig.add_subplot(1, 2, 2)
title2 = plt.title("Buitenlandse vooropleiding")
hist2 = plt.hist(Studiepunten_buitenlands, density = True, edgecolor = "black", bins = 31)
main = fig.suptitle('Studiepunten van studenten Business Administration in het tweede jaar')
plt.show()
Beide histogrammen bevatten een grote groep studenten met een laag aantal studiepunten (twaalf of minder). De overige studenten volgen een ietwat scheve verdeling met de top rond de vijftig studiepunten. De verdelingen van beide groepen studenten hebben echter niet dezelfde vorm. De frequentiedichtheid van het aantal studenten rond de vijftig studiepunten is veel hoger voor de studenten met Nederlandse vooropleiding, terwijl de frequentiedichtheid van het aantal studenten met twaalf of minder studiepunten juist hoger is voor de studenten met een buitenlandse vooropleiding.
19.4.3. Assumptie groepsgrootte#
Maak een kruistabel met het aantal observaties hoger en lager dan de mediaan voor beide ongepaarde groepen. Bereken vervolgens de verwachte aantallen observaties met de functie sps.contingency.expected_freq() van het package scipy met als argument de kruistabel Kruistabel.
import scipy.stats as sps
# Bereken de mediaan van alle observaties samengevoegd
Mediaan = np.median(dfStudiepunten_studiejaar2["Studiepunten"])
# Bepaal voor elke observatie of deze hoger of lager/gelijk aan de mediaan is
Index_hoger_lager = dfStudiepunten_studiejaar2["Studiepunten"] > Mediaan
# Maak een kruistabel
Kruistabel = pd.crosstab(Index_hoger_lager, dfStudiepunten_studiejaar2["Vooropleiding"])
# Bereken verwachte aantallen observaties
sps.contingency.expected_freq(Kruistabel)
array([[478.8, 277.2],
[471.2, 272.8]])
Geen van de verwachte aantallen observaties is kleiner dan vijf, dus er is voldaan aan de assumptie over de groepsgroottes. Voer Mood’s mediaan toets uit met behulp van de Chi-kwadraat toets.
19.4.4. Mood’s mediaan toets#
Gebruik de functie median_test() van het package scipy.stats om Mood’s mediaan toets uit te voeren. De eerste twee argumenten zijn vectoren met het aantal studiepunten van studenten met een Nederlandse (Studiepunten_Nederlands) en buitenlandse (Studiepunten_buitenlands) vooropleiding. Het derde argument ties = "below" geeft aan dat de observaties die gelijk zijn aan de mediaan opgeteld worden bij de observaties die kleiner dan de mediaan zijn.
# Sla de studiepunten van beide groepen apart op in een vector
Studiepunten_Nederlands = dfStudiepunten_studiejaar2[dfStudiepunten_studiejaar2["Vooropleiding"] == "Nederlands"]["Studiepunten"]
Studiepunten_buitenlands = dfStudiepunten_studiejaar2[dfStudiepunten_studiejaar2["Vooropleiding"] == "buitenlands"]["Studiepunten"]
# Voer Mood's mediaan toets uit
Toetsstatistiek, p_waarde, Mediaan, Kruistabel = sps.median_test(Studiepunten_Nederlands, Studiepunten_buitenlands, ties = "below")
print(Toetsstatistiek)
print(p_waarde)
print(Mediaan)
79.68613340536093
4.388699682569796e-19
39.0
χ^2^ ~ 1 ~ =
r Round_and_format(py$Toetsstatistiek), p = < 0,0001De p-waarde is kleiner dan 0,05, dus de H0 wordt verworpen.9
De mediaan van de variabele studiepunten is
r Round_and_format_0decimals(py$Mediaan)
19.5. Rapportage#
Mood’s mediaan toets is uitgevoerd om te toetsen of de mediaan van het behaald aantal studiepunten in het tweede jaar van de bachelor Business Administration hetzelfde is voor studenten met buitenlandse vooropleiding als voor studenten met Nederlandse vooropleiding. De resultaten van de toets laten zien dat er een significant verschil is tussen beide medianen, χ^2^ 1 = r Round_and_format(py$Toetsstatistiek), p = < 0,0001. Studenten met een Nederlandse vooropleiding lijken dus meer studiepunten te behalen in het tweede jaar dan studenten met een buitenlandse vooropleiding.
- 1(1,2)
Statistics How To (28 februari 2016). Mood’s Median Test: Definition, Run the Test and Interpret Results. Statistics How to.
- 2
Brown, G. W., & Mood, A. M. (1951). On median tests for linear hypotheses. In Proceedings of the Second Berkeley Symposium on Mathematical Statistics and Probability. The Regents of the University of California.
- 3
Onderscheidend vermogen, in het Engels power genoemd, is de kans dat de nulhypothese verworpen wordt wanneer de alternatieve hypothese ‘waar’ is.
- 4
Divine, G. W., Norton, H. J., Barón, A. E., & Juarez-Colunga, E. (2018). The Wilcoxon–Mann–Whitney procedure fails as a test of medians. The American Statistician, 72(3), 278-286.
- 5
SPSS Tutorials. SPSS Median Test for 2 Independent Medians. Bezocht op 22 april 2020. Statistics How to.
- 6
Mood’s mediaan toets kan ook uitgevoerd worden om de medianen te vergelijken van twee of meer ordinale variabelen. Echter, de Mann-Whitney U toets of de Kruskal Wallis toets zijn dan alternatieven met een hoger onderscheidend vermogen.
- 18
De breedte van de staven van het histogram wordt vaak automatisch bepaald, maar kan handmatig aangepast worden. Aangezien de breedte van de staven bepalend zijn voor de indruk die de visualisatie geeft, is het verstandig om hier goed op te letten.
- 9
In dit voorbeeld wordt uitgegaan van een waarschijnlijkheid van 95% c.q. een p-waardegrens van 0,05. De grens is naar eigen inzicht aan te passen; houd hierbij rekening met type I en type II fouten.