Pesquisa de site

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.

Artigos relacionados: