Hoe voer je t-tests uit bij pandas (3 voorbeelden)
De volgende voorbeelden laten zien hoe u drie verschillende t-tests kunt uitvoeren met behulp van een pandas DataFrame:
- Onafhankelijke t-test met twee steekproeven
- Welch’s t-test met twee steekproeven
- Gepaarde monsters t-test
Voorbeeld 1: Onafhankelijke t-test met twee steekproeven bij panda’s
Een onafhankelijke t-test met twee steekproeven wordt gebruikt om te bepalen of de gemiddelden van twee populaties gelijk zijn.
Stel bijvoorbeeld dat een hoogleraar wil weten of twee verschillende studiemethoden tot verschillende gemiddelde cijfers op tentamens leiden.
Om dit te testen rekruteert hij 10 studenten die methode A gebruiken en 10 studenten die methode B gebruiken.
De volgende code laat zien hoe u de scores van elke leerling in een pandas DataFrame kunt invoeren en vervolgens de functie ttest_ind() van de SciPy- bibliotheek kunt gebruiken om een onafhankelijke t-test met twee steekproeven uit te voeren:
import pandas as pd
from scipy. stats import ttest_ind
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#view first five rows of DataFrame
df. head ()
method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform independent two sample t-test
ttest_ind(group1[' score '], group2[' score '])
Ttest_indResult(statistic=-2.6034304605397938, pvalue=0.017969284594810425)
Uit het resultaat kunnen we zien:
- t-teststatistiek: – 2,6034
- p-waarde: 0,0179
Omdat de p-waarde kleiner is dan 0,05, verwerpen we de nulhypothese van de t-toets en concluderen we dat er voldoende bewijs is om te stellen dat de twee methoden tot verschillende gemiddelde examenscores leiden.
Voorbeeld 2: Welch’s t-test bij panda’s
De t-test van Welch is vergelijkbaar met de onafhankelijke t-test met twee steekproeven, behalve dat er niet van wordt uitgegaan dat de twee populaties waaruit de steekproeven zijn getrokken een gelijke variantie hebben.
Om de t-test van Welch uit te voeren op exact dezelfde gegevensset als het vorige voorbeeld, hoeven we eenvoudigweg equal_var=False in de functie ttest_ind () als volgt op te geven:
import pandas as pd
from scipy. stats import ttest_ind
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform Welch's t-test
ttest_ind(group1[' score '], group2[' score '], equal_var= False )
Ttest_indResult(statistic=-2.603430460539794, pvalue=0.02014688617423973)
Uit het resultaat kunnen we zien:
- t-teststatistiek: – 2,6034
- p-waarde: 0,0201
Omdat de p-waarde kleiner is dan 0,05, verwerpen we de nulhypothese van Welch’s t-test en concluderen we dat er voldoende bewijs is om te stellen dat de twee methoden tot verschillende gemiddelde examenscores leiden.
Voorbeeld 3: T-test van gepaarde monsters bij Panda’s
Een paired samples t-test wordt gebruikt om te bepalen of twee populatiegemiddelden gelijk zijn, waarbij elke waarneming in de ene steekproef kan worden geassocieerd met een waarneming in de andere steekproef.
Stel bijvoorbeeld dat een hoogleraar wil weten of twee verschillende studiemethoden tot verschillende gemiddelde cijfers op tentamens leiden.
Om dit te testen rekruteert hij tien studenten die methode A gebruiken en vervolgens een test afleggen. Vervolgens laat hij dezelfde tien leerlingen die Methode B gebruikten zich voorbereiden en nog een toets van vergelijkbare moeilijkheidsgraad afleggen.
Omdat alle leerlingen in beide steekproeven voorkomen, kunnen we in dit scenario een gepaarde steekproeven-t-toets uitvoeren.
De volgende code laat zien hoe u de scores van elke leerling in een Panda DataFrame kunt invoeren en vervolgens de functie ttest_rel() van de SciPy- bibliotheek kunt gebruiken om een t-test met gepaarde voorbeelden uit te voeren:
import pandas as pd
from scipy. stats import ttest_rel
#create pandas DataFrame
df = pd. DataFrame ({'method': ['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B', 'B'],
'score': [71, 72, 72, 75, 78, 81, 82, 83, 89, 91, 80, 81, 81,
84, 88, 88, 89, 90, 90, 91]})
#view first five rows of DataFrame
df. head ()
method score
0 to 71
1 To 72
2 To 72
3 to 75
4 to 78
#define samples
group1 = df[df[' method ']==' A ']
group2 = df[df[' method ']==' B ']
#perform independent two sample t-test
ttest_rel(group1[' score '], group2[' score '])
Ttest_relResult(statistic=-6.162045351967805, pvalue=0.0001662872100210469)
Uit het resultaat kunnen we zien:
- t-teststatistiek: – 6,1620
- p-waarde: 0,0001
Omdat de p-waarde kleiner is dan 0,05, verwerpen we de nulhypothese van de paired samples t-test en concluderen we dat er voldoende bewijs is om te stellen dat de twee methoden tot verschillende gemiddelde examenscores leiden.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in Python kunt uitvoeren:
Hoe u een Chi-Square-onafhankelijkheidstest uitvoert in Python
Eenrichtings-ANOVA uitvoeren in Python
Hoe Fisher’s Exact-test in Python uit te voeren