Búsqueda de sitios web

Cómo realizar una prueba de bondad de ajuste de chi-cuadrado en Python


<h2>Introducción <p>Los científicos de datos suelen utilizar métodos estadísticos para probar hipótesis y obtener información de los conjuntos de datos. Si bien existen varios métodos estadísticos disponibles, este artículo analizará la prueba de bondad de ajuste de Chi-cuadrado con su implementación en Python. La prueba de Chi-Cuadrado valida la distribución observada de variables categóricas con la distribución esperada. Nos dice si los valores de eventos disponibles difieren de los valores esperados.

Prueba de chi-cuadrado

Puede realizar la prueba de Chi-cuadrado para verificar la distribución del conjunto de datos de los eventos observados. La prueba de Chi-Cuadrado hace algunas suposiciones que son las siguientes:

  • Las variables son independientes.

  • Sólo está presente una característica categórica.

  • Cada variable debe contener categorías con más de cinco recuentos de frecuencia.

  • Conjunto de datos muestreados aleatoriamente.

  • Cada grupo de datos debe mostrar exclusividad mutua en los recuentos de frecuencia.

Estadística de prueba de chi-cuadrado

La prueba de chi-cuadrado utiliza la siguiente fórmula para proporcionar resultados estadísticos:

Dónde

  • v denota el grado de libertad

  • O implica los valores observados de la muestra.

  • E representa los valores esperados de la población.

  • n indica los recuentos de categorías de variables.

Ahora aprendamos cómo podemos realizar la prueba de Chi-Cuadrado.

Pasos de la prueba de hipótesis

Hay algunos pasos para realizar la prueba de Chi-Cuadrado que son los siguientes:

  • Al principio, necesitas crear una hipótesis nula, H0, y una hipótesis alternativa, H1.

  • Luego es necesario decidir el umbral de probabilidad para aceptar o rechazar las hipótesis nulas. El valor típico de este umbral es del 5% y el valor crítico correspondiente depende de la distribución.

  • Luego calcule el estadístico Chi-Cuadrado usando la fórmula anterior.

  • Por último, es necesario comparar el valor de la estadística de prueba con el valor crítico. Si la estática de la prueba es mayor que el valor crítico, entonces rechazamos la hipótesis nula; de lo contrario, no podemos rechazar la hipótesis nula.

Implementemos la prueba siguiendo los pasos mencionados anteriormente:

Aquí, la hipótesis nula es que la variable se distribuye de una manera predeterminada. Y la hipótesis alternativa es que la variable no se distribuye de manera diferente. Implementaremos la prueba de Chi-Cuadrado con dos enfoques, que se analizan a continuación:

Implementación de Chi-Cuadrado con función incorporada

Sintaxis

chi_square_test_statistic, p_value = stats.chisquare(
	experience_in_years, Salary)

Esta función toma dos características, les aplica la fórmula de chi-cuadrado y devuelve las estadísticas de prueba de chi-cuadrado y p_value.

Algoritmo

  • Cargue las dependencias requeridas como scipy y numpy.

  • Pase las características a la función chi-cuadrado de scipy.stats en la que desea aplicar la estadística de prueba.

  • Obtenga la estadística de prueba y p_value.

  • Aceptar o rechazar la hipótesis nula y alternativa basada en el valor p y la estadística chi-cuadrado.

Ejemplo

El proceso comienza con la carga de todas las dependencias necesarias.

# importing packages
import scipy.stats as stats
import numpy as np

Preparemos datos de demostración donde tendríamos dos columnas "experiencia_en_años" y "salario". Para estos datos estaríamos realizando la prueba de Chi-Cuadrado.

# 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))

Explicación

El código anterior es la implementación en Python de la prueba Chi-Square utilizando la función incorporada en la biblioteca Scipy. El método chicuadrado se importó de estadísticas y devuelve dos valores: chi_square_test_statistic y p-value. Este método toma dos características, comparará ambas variables y aplicará la fórmula de chi-cuadrado mencionada anteriormente para calcular las estadísticas de chi-cuadrado. Aquí comparamos la relación entre el número de experiencias en años y el paquete anual (salario).

Producción

chi_square_test_statistic is : 5.0127344877344875
p_value : 0.542180861413329
12.591587243743977

Como podemos ver aquí, el valor p es 0,54 y el valor crítico es 12,59. El estadístico de prueba es menor que el valor crítico, por lo que podemos aceptar la hipótesis nula y rechazar la hipótesis alternativa.

Implementando Chi-Cuadrado desde cero

Sintaxis

chi_square_test_statistic1 = chi_square_test_statistic1 + \
   (np.square(experience_in_years[i]-salary[i]))/salary[i]

Calcule el valor de chi-cuadrado de cada muestra en el conjunto de datos usando la fórmula mencionada anteriormente y súmelos para obtener la puntuación final.

Algoritmo

  • Cargue las dependencias requeridas como numpy.

  • Inicialice una variable con valor 0 que almacenaría el valor final de la estadística.

  • Itere sobre cada muestra de los datos y calcule las estadísticas para cada muestra y agréguelas a la variable que contiene el valor final de la estadística.

  • Una vez calculado el estadístico, acepte o rechace la hipótesis nula y alternativa.

Ejemplo

Este enfoque implementará la prueba de bondad de ajuste de Chi-cuadrado utilizando la fórmula. Este método producirá los mismos resultados que el método anterior.

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))

Explicación

El código anterior se implementó en Python para realizar la prueba de Chi-Cuadrado con los mismos datos. En este método, hemos implementado la fórmula estadística de chi-cuadrado en Python solo en lugar de importar el método incorporado. El bucle for ayuda a recorrer los conjuntos de datos. Luego implementamos la fórmula mencionada anteriormente con NumPy y agregamos la puntuación a la puntuación anterior para obtener la puntuación general de todo el conjunto de datos. Por último, comprobamos las estadísticas de chi-cuadrado obtenidas con este método.

Producción

chi square value determined by formula : 5.0127344877344875
12.591587243743977

Como esperábamos, los resultados son los mismos que obtuvimos con el método anterior. Este resultado también muestra que no debemos rechazar la hipótesis nula pero podemos rechazar la hipótesis alternativa.

Conclusión

Hemos aprendido sobre la prueba de bondad de ajuste de Chi-Cuadrado y cómo implementarla usando Python. Resumamos el artículo con algunas conclusiones clave:

  • La prueba de Chi-Cuadrado verifica la distribución de la variable categórica observada con la distribución de la variable esperada.

  • La prueba de Chi-Cuadrado hace algunas suposiciones, que incluyen solo una variable categórica, variables independientes, al menos cinco categorías únicas y datos muestreados aleatoriamente.

  • Concluimos los resultados de la prueba aceptando o rechazando la hipótesis nula.

  • El valor umbral debe ser menor que el valor crítico para aceptar la hipótesis nula.