Gebruik de tekentoets om te toetsen of de medianen van twee gepaarde groepen van elkaar verschillen.1 Deze toets is een alternatief voor de gepaarde t-toets als de verschilscores van de gepaarde groepen niet normaal verdeeld zijn. De Wilcoxon signed rank toets kan ook gebruikt worden om het verschil tussen medianen van gepaarde groepen te toetsen. Deze toets heeft een hoger onderscheidend vermogen2, maar vereist dat de verdeling van de verschilscores symmetrisch is.3 De tekentoets kan ook gebruikt worden als de verdeling niet symmetrisch is.
De directeur van de Academie Mens & Maatschappij wil bekijken hoe het inkomen van zijn alumni zich ontwikkelt nadat zij zijn afgestudeerd. Hij is nieuwsgierig of het inkomen gedurende deze jaren groeit of juist stagneert voor deze alumni. Deze informatie is interessant om te gebruiken bij voorlichtingsactiviteiten van de Academie. Hij bekijkt het bruto jaarinkomen van de alumni één jaar na afstuderen en vergelijkt het met het bruto jaarinkomen vijf jaar na afstuderen.
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: Er is geen verschil in de medianen van het bruto jaarinkomen van de alumni van de Academie Mens & Maatschappij één jaar na afstuderen en vijf jaar na afstuderen.
HA: Er is een verschil in de medianen van het bruto jaarinkomen van de alumni van de Academie Mens & Maatschappij één jaar na afstuderen en vijf jaar na afstuderen.
Het meetniveau van de variabelen is continu.4
Er is data ingeladen met het bruto jaarinkomen van alumni van de Academie Mens & Maatschappij genaamd dfAlumni_jaarinkomens. De directeur wil een vergelijking maken tussen het inkomen één jaar na afstuderen (meetmoment T1) en vijf jaar na afstuderen (meetmoment T2).
Gebruik <dataframe>.head() en <dataframe>.tail() om de structuur van de data te bekijken.
# Pandas library importeren
import pandas as pd
# Eerste 5 observaties
print(dfAlumni_jaarinkomens.head())
## Studentnummer Meetmoment Inkomen
## 0 3343469 T1 25127.0
## 1 3836434 T1 27217.0
## 2 3634330 T1 29363.0
## 3 3010816 T1 44690.0
## 4 3570949 T1 25839.0
# Laatste 5 observaties
print(dfAlumni_jaarinkomens.tail())
## Studentnummer Meetmoment Inkomen
## 53 3705137 T2 24621.0
## 54 3434481 T2 30241.0
## 55 3120294 T2 21424.0
## 56 3865043 T2 29047.0
## 57 3862839 T2 31131.0
Bekijk de grootte en de mediaan van de data met len() en np.median() van het package numpy. Maak hiervoor twee vectoren met daarin de jaarinkomens op T1 en T2.
Alumni_jaarinkomens_T1 = dfAlumni_jaarinkomens[dfAlumni_jaarinkomens["Meetmoment"] == "T1"]["Inkomen"]
Alumni_jaarinkomens_T2 = dfAlumni_jaarinkomens[dfAlumni_jaarinkomens["Meetmoment"] == "T2"]["Inkomen"]
import numpy as np
print(len(Alumni_jaarinkomens_T1))
## 29
print(np.median(Alumni_jaarinkomens_T1))
## 29212.0
import numpy as np
print(len(Alumni_jaarinkomens_T2))
## 29
print(np.median(Alumni_jaarinkomens_T2))
## 29453.0
Maak een histogram5 om de verdeling van de bruto jaarinkomens van de alumni één jaar en vijf jaar na afstuderen 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("Een jaar na afstudereren")
hist1 = plt.hist(Alumni_jaarinkomens_T1, density = True, edgecolor = "black", bins = 29)
sub2 = fig.add_subplot(1, 2, 2)
title2 = plt.title("Vijf jaar na afstudereren")
hist2 = plt.hist(Alumni_jaarinkomens_T2, density = True, edgecolor = "black", bins = 31)
main = fig.suptitle('Bruto jaarinkomen alumni Mens & Maatschappij')
plt.show()
Op beide meetmomenten is te zien dat de meeste alumni tussen de 0 en €35.000 euro per jaar verdienen en dat een paar alumni hierboven zit. Beide verdelingen hebben één top, maar zijn niet symmetrisch. Bij de inkomens 1 jaar na afstuderen ligt de meerderheid van de observaties links van de top. Bij de inkomens 5 jaar na afstuderen ligt de meerderheid van de observaties juist rechts van de top. Beide verdeling lijken niet echt op elkaar qua vorm en spreiding.
Maak vervolgens een histogram6 van de verschilscores.
# Maak een variabele met de verschilscores
Alumni_verschilscores = np.array(Alumni_jaarinkomens_T2) - np.array(Alumni_jaarinkomens_T1)
## Histogram met matplotlib
import matplotlib.pyplot as plt
hist = plt.hist(Alumni_verschilscores, density = True, edgecolor = "black", bins = 9)
title = plt.title("Verschilscores bruto jaarinkomen alumni Mens & Maatschappij")
xlab = plt.xlabel("Verschilscores")
ylab = plt.ylabel("Frequentiedichtheid")
plt.show()
De verdeling van de verschilscores bevat voornamelijk positieve waarden en een paar negatieve waarden; de meeste alumni zijn er dus in bruto jaarinkomen op vooruitgegaan. De verdeling lijkt niet geheel symmetrisch te zijn
Voer een tweezijdige tekentoets uit om de vraag te beantwoorden of de mediaan van de bruto jaarinkomens van alumni verschillend is voor de inkomens één jaar en vijf jaar na afstuderen. Gebruik van het scipy.stats package de functie binom_test() met de argumenten x = Hoger dat het aantal alumni aangeeft dat na vijf jaar meer verdient dan na één jaar na afstuderen, n = Aantal_observaties dat het totaal aantal alumni aangeeft, p = 0.5 om de nulhypothese aan te geven en alternative = 'two-sided' om een tweezijdige alternatieve hypothese te toetsen. De nulhypothese stelt dat er geen verschil is tussen de medianen van het bruto jaarinkomen één jaar en vijf jaar na afstuderen wat betekent dat (ongeveer) de helft van de verschilscores groter dan nul is en de helft van de verschilscores kleiner dan nul is. Vandaar dat de nulhypothese aangegeven kan worden door de verwachte proportie p gelijk te stellen aan 0.5.
import scipy.stats as sps
# Maak een variabele met de verschilscores
Alumni_verschilscores = np.array(Alumni_jaarinkomens_T2) - np.array(Alumni_jaarinkomens_T1)
# Bereken het aantal alumni dat na 5 jaar meer verdient dan na een jaar
Hoger = sum(Alumni_verschilscores > 0)
# Bereken het totaal aantal observaties
Aantal_observaties = len(Alumni_verschilscores)
# Voer de binomiaaltoets uit
Binomiaaltoets = sps.binom_test(x = Hoger, n = Aantal_observaties, p = 0.5, alternative = 'two-sided')
print(Binomiaaltoets)
# Bereken de proportie alumni dat na 5 jaar meer verdient dan na een jaar
## 1.5236437320709232e-05
Proportie_boven_mediaan = Hoger / Aantal_observaties
print(Proportie_boven_mediaan)
## 0.896551724137931
De tekentoets is uitgevoerd om te onderzoeken of er een verschil is tussen het mediane bruto jaarinkomen van de alumni van de Academie Mens & Maatschappij één jaar en vijf jaar na afstuderen. De resultaten van de toets laten zien dat er een significant verschil is tussen beide medianen, S = 26, N = 29, p < 0.0001. Van de 29 alumni verdienen 26 alumni meer vijf jaar na afstuderen. Deze resultaten duiden op een verschil in het mediane bruto jaarinkomen van de alumni van de Academie Mens & Maatschappij waarbij de inkomens vijf jaar na afstuderen hoger lijken te liggen.
Laerd Statistics (2018). Sign Test using SPSS Statistics. https://statistics.laerd.com/spss-tutorials/sign-test-using-spss-statistics.php↩
Onderscheidend vermogen, in het Engels power genoemd, is de kans dat de nulhypothese verworpen wordt wanneer de alternatieve hypothese waar is.↩
Statistics How To (27 mei 2018). One Sample Median Test. Statistics How to.↩
Laerd Statistics (2018). Sign Test using SPSS Statistics. https://statistics.laerd.com/spss-tutorials/sign-test-using-spss-statistics.php↩
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.↩
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.↩
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.↩