Como realizar um teste de qualidade de ajuste qui-quadrado em Python
<h2>Introdução <p>Os cientistas de dados costumam usar métodos estatísticos para testes de hipóteses para obter insights dos conjuntos de dados. Embora existam vários métodos estatísticos disponíveis, este artigo discutirá o teste de qualidade de ajuste qui-quadrado com sua implementação em Python. O teste Qui-Quadrado valida a distribuição observada das variáveis categóricas para a distribuição esperada. Diz-nos se os valores dos eventos disponíveis diferem dos valores esperados.
Teste Qui-Quadrado
Você pode realizar o teste Qui-Quadrado para verificar a distribuição do conjunto de dados para eventos observados. O teste Qui-Quadrado faz algumas suposições que são as seguintes -
As variáveis são independentes.
Apenas um recurso categórico está presente.
Cada variável deve conter categorias com mais de cinco contagens de frequência.
-
Conjunto de dados amostrado aleatoriamente.
Cada grupo de dados deve mostrar exclusividade mútua nas contagens de frequência.
Estatística de teste qui-quadrado
O teste Qui-Quadrado usa a seguinte fórmula para fornecer resultados estatísticos -
Onde
v denota o grau de liberdade
O implica os valores observados da amostra
E representa os valores esperados da população
n indica as contagens de categorias de variáveis.
Agora vamos aprender como podemos realizar o teste Qui-Quadrado.
Etapas de teste de hipóteses
Existem algumas etapas na realização do teste Qui-Quadrado que são as seguintes -
Primeiramente, você precisa criar uma hipótese nula, H0, e uma hipótese alternativa, H1.
Então você precisa decidir o limite de probabilidade para aceitar ou rejeitar as hipóteses nulas. O valor típico para este limite é de 5%, e o valor crítico correspondente depende da distribuição.
Em seguida, calcule a estatística Qui-Quadrado usando a fórmula acima.
Por fim, você precisa comparar o valor da estatística de teste com o valor crítico. Se a estática do teste for maior que o valor crítico, rejeitamos a hipótese nula; caso contrário, não rejeitaremos a hipótese nula.
Vamos implementar o teste usando as etapas mencionadas acima -
Aqui, a hipótese nula é que a variável está distribuída de forma predeterminada. E a hipótese alternativa é que a variável não está distribuída de maneira diferente. Implementaremos o teste Qui-Quadrado com duas abordagens, discutidas abaixo -
Implementando Qui-Quadrado com Função Integrada
Sintaxe
chi_square_test_statistic, p_value = stats.chisquare(
experience_in_years, Salary)
Esta função utiliza dois recursos, aplica a fórmula do qui-quadrado a eles e retorna as estatísticas do teste do qui-quadrado e o valor-p.
Algoritmo
Carregue as dependências necessárias como scipy e numpy.
Passe os recursos para a função qui-quadrado de scipy.stats na qual você deseja aplicar a estatística de teste.
-
Obtenha a estatística de teste e p_value.
Aceite ou rejeite a hipótese nula e alternativa com base no valor p e na estatística qui-quadrado.
Exemplo
O processo começa carregando todas as dependências necessárias.
# importing packages
import scipy.stats as stats
import numpy as np
Vamos preparar dados de demonstração onde teríamos duas colunas “experiência_em_anos” e “salário”. Para esses dados, estaríamos realizando o teste Qui-Quadrado.
# No of years of experience of an employee
# Yearly Salary package in lakhs
experience_in_years= [8, 6, 10, 7, 8, 11, 9]
Salary= [9, 8, 11, 8, 10, 7, 6]
# Chi-Square Goodness of Fit Test
chi_square_test_statistic, p_value = stats.chisquare(
experience_in_years, Salary)
# chi square test statistic and p value
print('chi_square_test_statistic is : ' +
str(chi_square_test_statistic))
print('p_value : ' + str(p_value))
# find Chi-Square critical value
print(stats.chi2.ppf(1-0.05, df=6))
Explicação
O código acima é a implementação Python do teste Qui-Quadrado usando função embutida na biblioteca Scipy. O método qui-quadrado foi importado de estatísticas que retorna dois valores: chi_square_test_statistic e p-value. Este método possui dois recursos e irá comparar ambas as variáveis e aplicar a fórmula do qui-quadrado acima mencionada para calcular as estatísticas do qui-quadrado. Aqui estamos comparando a relação entre o número de experiências em anos e o pacote por ano (salário).
Saída
chi_square_test_statistic is : 5.0127344877344875
p_value : 0.542180861413329
12.591587243743977
Como podemos ver aqui, o valor p é 0,54 e o valor crítico é 12,59. A estatística de teste é menor que o valor crítico, portanto, podemos aceitar a hipótese nula e rejeitar a hipótese alternativa.
Implementando Qui-Quadrado do zero
Sintaxe
chi_square_test_statistic1 = chi_square_test_statistic1 + \
(np.square(experience_in_years[i]-salary[i]))/salary[i]
Calcule o valor do qui-quadrado de cada amostra no conjunto de dados usando a fórmula mencionada acima e some-os para obter a pontuação final.
Algoritmo
Carregue as dependências necessárias como numpy.
Inicialize uma variável com valor 0 que armazenaria o valor final da estatística.
Itere sobre cada amostra nos dados e calcule as estatísticas para cada amostra e adicione-as à variável que contém o valor final da estatística.
Depois que a estatística for calculada, aceite ou rejeite as hipóteses nula e alternativa.
Exemplo
Esta abordagem implementará o teste de qualidade de ajuste Qui-Quadrado usando a fórmula. Este método produzirá os mesmos resultados do método acima.
import scipy.stats as stats
import numpy as np
# No of years of experience of an employee
# Yearly Salary package in lakhs
experience_in_years= [8, 6, 10, 7, 8, 11, 9]
salary= [9, 8, 11, 8, 10, 7, 6]
# determining chi square goodness of fit using formula
chi_square_test_statistic1 = 0
for i in range(len(experience_in_years)):
chi_square_test_statistic1 = chi_square_test_statistic1 + \
(np.square(experience_in_years[i]-salary[i]))/salary[i]
print('chi square value determined by formula : ' +
str(chi_square_test_statistic1))
# find Chi-Square critical value
print(stats.chi2.ppf(1-0.05, df=6))
Explicação
O código acima foi implementado em Python para realizar o teste Qui-Quadrado nos mesmos dados. Neste método, implementamos a fórmula estatística qui-quadrado em Python apenas, em vez de importar o método embutido. O loop for ajuda a iterar pelos conjuntos de dados. Em seguida, implementamos a fórmula mencionada acima com NumPy e adicionamos a pontuação à pontuação anterior para obter a pontuação geral de todo o conjunto de dados. Por fim, verificamos as estatísticas qui-quadrado obtidas por meio deste método.
Saída
chi square value determined by formula : 5.0127344877344875
12.591587243743977
Como esperávamos, os resultados são os mesmos que obtivemos com o método anterior. Este resultado também mostra que não devemos rejeitar a hipótese nula, mas podemos rejeitar a hipótese alternativa.
Conclusão
Aprendemos sobre o teste de qualidade de ajuste qui-quadrado e como implementá-lo usando Python. Vamos resumir o artigo com algumas conclusões importantes -
O teste Qui-Quadrado verifica a distribuição da variável categórica observada com a distribuição esperada da variável.
O teste Qui-Quadrado faz algumas suposições, incluindo apenas uma variável categórica, variáveis independentes, pelo menos cinco categorias únicas e dados amostrados aleatoriamente.
Concluímos os resultados do teste aceitando ou rejeitando a hipótese nula.
O valor limite deve ser menor que o valor crítico para aceitar a hipótese nula.