Uma tabela de contingência pode ser criada usando um DataFrame
Estes são os resultados de 120 lançamentos de um dado e uma moeda.
import pandas as pd
d = {'':['CARA', 'COROA'], 'UM':[10,8], 'DOIS':[9,16], 'TRÃS':[11,13], 'QUATRO':[12,7], 'CINCO':[6,7], 'SEIS':[5,16]}
df = pd.DataFrame(data=d)
df = df.set_index('')
df
Ao somar os elementos de cada linha e cada coulna obtemos os resultados dos lançamentos da moeda e dos lançamentos do dado, separadamente.
CARAS = sum(df.iloc[0,:].values) # soma da linha 1, as caras
COROAS = sum(df.iloc[1,:].values) # soma da linha 2, as coroas
moeda = [CARAS, COROAS]
moeda
UM = sum(df.iloc[:,0].values) # soma da coluna 1, os UM
DOIS = sum(df.iloc[:,1].values) # soma da coluna 2, os DOIS
TRES = sum(df.iloc[:,2].values) # soma da coluna 3, os TRÃS
QUATRO = sum(df.iloc[:,3].values) # soma da coluna 4, os QUATRO
CINCO = sum(df.iloc[:,4].values) # soma da coluna 5, os CINCO
SEIS = sum(df.iloc[:,5].values) # soma da coluna 6, os SEIS
dado = [UM, DOIS, TRES, QUATRO, CINCO, SEIS]
dado
O teste de aderência de Pearson pode ser implementado usando a função chisquare do módulo scipy.stats. A hipótese nula, por defeito, é a equiprobabilidade dos diferentes resultados possÃveis.
from scipy.stats import chisquare
chi, p = chisquare(moeda)
chi, p
from scipy.stats import chisquare
chi, p = chisquare(dado)
chi, p
Estes valores, os qui-quadrado os valores de prova p, mostram que moeda e dado são "honestos", ou seja, os possÃveis resultados são equiprováveis.
O teste de independência de Pearson pode ser implementado usando a função chi2_contingency do módulo scipy.stats
from scipy.stats import chi2_contingency
chi2, p, dof, expected = chi2_contingency(df)
chi2, p, dof, expected
Os valores obtidos mostram que o dado e a moeda podem ser considerados independentes