Como realizar testes t no pandas (3 exemplos)
Os exemplos a seguir mostram como realizar três testes t diferentes usando um DataFrame do pandas:
- Teste t independente de duas amostras
- Teste t de duas amostras de Welch
- Teste t de amostras pareadas
Exemplo 1: teste t independente de duas amostras em pandas
Um teste t independente de duas amostras é usado para determinar se as médias de duas populações são iguais.
Por exemplo, suponha que um professor queira saber se dois métodos de estudo diferentes levam a notas médias diferentes nos exames.
Para testar isso, ele recruta 10 alunos para usar o método A e 10 alunos para usar o método B.
O código a seguir mostra como inserir as pontuações de cada aluno em um DataFrame do pandas e, em seguida, usar a função ttest_ind() da biblioteca SciPy para realizar um teste t independente de duas amostras:
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)
Pelo resultado podemos ver:
- estatística do teste t: – 2,6034
- valor p: 0,0179
Como o valor p é inferior a 0,05, rejeitamos a hipótese nula do teste t e concluímos que há evidências suficientes para afirmar que os dois métodos levam a notas médias diferentes nos exames.
Exemplo 2: teste t de Welch em pandas
O teste t de Welch é semelhante ao teste t independente para duas amostras, exceto que não pressupõe que as duas populações das quais as amostras são extraídas tenham variância igual .
Para realizar o teste t de Welch exatamente no mesmo conjunto de dados do exemplo anterior, precisamos simplesmente especificar equal_var=False na função ttest_ind () da seguinte forma:
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)
Pelo resultado podemos ver:
- estatística do teste t: – 2,6034
- valor p: 0,0201
Como o valor p é inferior a 0,05, rejeitamos a hipótese nula do teste t de Welch e concluímos que há evidências suficientes para afirmar que os dois métodos levam a notas médias diferentes nos exames.
Exemplo 3: teste t de amostras pareadas no Pandas
Um teste t de amostras pareadas é usado para determinar se duas médias populacionais são iguais, em que cada observação em uma amostra pode ser associada a uma observação na outra amostra.
Por exemplo, suponha que um professor queira saber se dois métodos de estudo diferentes levam a notas médias diferentes nos exames.
Para testar isso, ele recruta 10 alunos para usar o Método A e depois fazer um teste. Depois ele permite que os mesmos 10 alunos que usaram o Método B se preparem e façam outro teste de dificuldade semelhante.
Como todos os alunos aparecem em ambas as amostras, podemos realizar um teste t de amostras pareadas neste cenário.
O código a seguir mostra como inserir as pontuações de cada aluno em um DataFrame do pandas e, em seguida, usar a função ttest_rel() da biblioteca SciPy para realizar um teste t de amostras emparelhadas:
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)
Pelo resultado podemos ver:
- estatística do teste t: – 6,1620
- valor p: 0,0001
Como o valor p é inferior a 0,05, rejeitamos a hipótese nula do teste t de amostras pareadas e concluímos que há evidências suficientes para afirmar que os dois métodos levam a notas médias diferentes nos exames.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em Python:
Como realizar um teste de independência qui-quadrado em Python
Como realizar ANOVA unidirecional em Python
Como realizar o teste exato de Fisher em Python