Come eseguire i test t su panda (3 esempi)
I seguenti esempi mostrano come eseguire tre diversi t-test utilizzando un DataFrame panda:
- T-test indipendente a due campioni
- Test t di Welch a due campioni
- Test t per campioni accoppiati
Esempio 1: test t indipendente a due campioni nei panda
Un t-test indipendente a due campioni viene utilizzato per determinare se le medie di due popolazioni sono uguali.
Ad esempio, supponiamo che un professore voglia sapere se due diversi metodi di studio portano a voti medi diversi agli esami.
Per testarlo, recluta 10 studenti per utilizzare il metodo A e 10 studenti per utilizzare il metodo B.
Il codice seguente mostra come inserire i punteggi di ogni studente in un DataFrame panda, quindi utilizzare la funzione ttest_ind() della libreria SciPy per eseguire un t-test indipendente a due campioni:
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)
Dal risultato possiamo vedere:
- Statistica del test t: – 2,6034
- valore p: 0,0179
Poiché il valore p è inferiore a 0,05, rifiutiamo l’ipotesi nulla del t-test e concludiamo che esistono prove sufficienti per affermare che i due metodi portano a punteggi medi degli esami diversi.
Esempio 2: test t di Welch nei panda
Il test t di Welch è simile al test t indipendente a due campioni, tranne per il fatto che non presuppone che le due popolazioni da cui vengono estratti i campioni abbiano la stessa varianza .
Per eseguire il test t di Welch esattamente sullo stesso set di dati dell’esempio precedente, dobbiamo semplicemente specificare equal_var=False nella funzione ttest_ind () come segue:
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)
Dal risultato possiamo vedere:
- Statistica del test t: – 2,6034
- Valore p: 0,0201
Poiché il valore p è inferiore a 0,05, rifiutiamo l’ipotesi nulla del test t di Welch e concludiamo che esistono prove sufficienti per affermare che i due metodi portano a punteggi medi degli esami diversi.
Esempio 3: test t per campioni accoppiati su Pandas
Un test t per campioni accoppiati viene utilizzato per determinare se due medie di popolazione sono uguali in cui ciascuna osservazione in un campione può essere associata a un’osservazione nell’altro campione.
Ad esempio, supponiamo che un professore voglia sapere se due diversi metodi di studio portano a voti medi diversi agli esami.
Per testarlo, recluta 10 studenti affinché utilizzino il Metodo A e poi sostengano un test. Quindi lascia che gli stessi 10 studenti che hanno utilizzato il Metodo B si preparino e sostengano un altro test di difficoltà simile.
Poiché tutti gli studenti compaiono in entrambi i campioni, in questo scenario possiamo eseguire un t-test per campioni accoppiati.
Il codice seguente mostra come inserire i punteggi di ogni studente in un DataFrame panda, quindi utilizzare la funzione ttest_rel() della libreria SciPy per eseguire un t-test di campioni accoppiati:
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)
Dal risultato possiamo vedere:
- Statistica del test t: – 6,1620
- Valore p: 0,0001
Poiché il valore p è inferiore a 0,05, rifiutiamo l’ipotesi nulla del t-test per campioni accoppiati e concludiamo che esistono prove sufficienti per affermare che i due metodi portano a punteggi medi degli esami diversi.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in Python:
Come eseguire un test di indipendenza del chi quadrato in Python
Come eseguire ANOVA unidirezionale in Python
Come eseguire il test esatto di Fisher in Python