Estás leyendo la publicación: Una guía para principiantes sobre la prueba de chi-cuadrado en python desde cero
Considere que está explorando un conjunto de datos y se pregunta si existe una relación entre las dos variables categóricas. Para verificar esto, puede pasar por una prueba estadística efectiva y, en este escenario, la prueba de Chi-cuadrado es la más adecuada. La prueba de Chi-cuadrado es una de las pruebas estadísticas que podemos utilizar para decidir si existe una correlación entre las variables categóricas analizando la relación entre los valores observados y esperados. En este artículo, discutiremos la prueba de Chi-cuadrado y entenderemos su implementación en Python desde cero tomando datos aleatorios. Los puntos principales que se discutirán en este artículo se enumeran a continuación.
Tabla de contenido
- ¿Qué es chi-cuadrado?
- ¿Dónde se usa chi-cuadrado?
- Introducción a los datos
- Implementar chi-cuadrado
- Corrección de Yate
Comencemos por comprender qué es la prueba de Chi-cuadrado.
¿Qué es Chi-cuadrado?
La prueba de Chi-cuadrado es una prueba estadística utilizada para determinar la relación entre las variables/columnas categóricas en el conjunto de datos. Examina la correlación entre las variables que no contienen los datos continuos.
¿Cómo utilizar la prueba de Chi-cuadrado?
Para usar la prueba de chi-cuadrado, podemos seguir los siguientes pasos:
- Defina la hipótesis nula (H0) y alternativa (H1).
- Determina el valor de alfa (𝞪) para según el dominio que estés trabajando. Idealmente, 𝞪=0,05 significa que está dispuesto a asumir un 0,5 % de riesgo/margen de error.
- Verifique los datos en busca de Nans u otro tipo de errores.
- Verifique los supuestos para la prueba.
- Por último, realice la prueba y saque su conclusión de rechazar o apoyar la hipótesis nula (H0).
La fórmula para la prueba de Chi-cuadrado se da como: –
Dónde,
La fórmula Chi-cuadrado es un método estadístico para comparar dos o más muestras de datos. Se utiliza con datos que consisten en variables distribuidas en varias categorías y se denota por
¿Dónde se usa la prueba de Chi-cuadrado?
La prueba de chi-cuadrado de Pearson es una prueba de hipótesis que se utiliza para determinar si existe una asociación significativa entre dos variables categóricas en los datos. La prueba implica dos hipótesis (H0 y H1):
- H0 : Las dos variables categóricas tienen sin relación (independiente)
- H1: Hay una relación (dependiente) entre dos variables categóricas
Entonces, como hipótesis nula, mantenemos el aspecto positivo de la prueba y en la hipótesis alternativa, mantenemos el aspecto negativo. El aspecto positivo de chi-cuadrado es que no debería haber ninguna correlación porque la correlación puede resultar en un ajuste excesivo del algoritmo de aprendizaje automático. Lo negativo es que existe una correlación entre las dos columnas categóricas.
En la siguiente sección del artículo, les presentaré los datos sobre los que vamos a implementar la prueba de chi-cuadrado para ver si están correlacionados.
Introducción a los datos
Crearemos una tabla aleatoria para implementar la prueba de Chi-cuadrado y verificaremos si existe una relación entre las columnas. Seguiremos estos pasos para crear una tabla de contingencia:
Paso 1: Importación de bibliotecas para crear una matriz y un marco de datos:
importar entumecido como np importar pandas como pd
Paso 2: crear una matriz y convertir esa matriz en el marco de datos:
np.random.seed(10) # Muestrear datos aleatoriamente con probabilidades fijas type_bottle = np.random.choice(a= [“paper”,”cans”,”glass”,”others”,”plastic”]pag = [0.05, 0.15 ,0.25, 0.05, 0.5]size=1000) # Muestrear datos aleatoriamente con probabilidades fijas mes = np.random.choice(a= [“January”,”February”,”March”]pag = [0.4, 0.2, 0.4]tamaño=1000) botellas = pd.DataFrame({“tipos”:tipo_botella, “meses”:mes}) botellas_tab = pd.crosstab(botellas.tipos, botellas.meses, márgenes = Verdadero) botellas_tab.columnas = [“January”,”February”,”March”,”row_totals”]
botellas_tab.index = [“paper”,”cans”,”glass”,”others”,”plastic”,”col_totals”]
observado = botella_tab.iloc[0:5,0:3] # Obtener una tabla sin totales para su uso posterior Bottles_tab
Después de ejecutar las líneas de códigos anteriores, la salida se vería así:
La tabla de contingencia anterior muestra los diferentes tipos de botellas (categoría) como índice que han sido recicladas en el mes de enero, febrero, marzo. Row_total y column_total muestran la suma total de cada categoría (tipo de botellas) y la recolección total del mes respectivamente.
Implementación de la prueba de Chi-cuadrado
Implementemos la prueba de Chi-cuadrado y verifiquemos la independencia de las columnas. Entonces, en la fórmula discutida anteriormente, necesitamos dos cosas: valores observados y esperado valores. Entonces necesitamos entender cómo calcular estos valores. El valor observado no es más que los datos originales.
¿Cómo calcular los valores esperados?
Multiplique el total de la fila por el total de la columna y divídalo por el número total de observaciones de una celda para obtener el recuento esperado. Entonces, para calcular los conteos esperados en python, necesitamos usar la función np.outer() en el total de filas y columnas. Por último, dividiendo la salida de la función np.outer() por las observaciones.
Ahora, como se explicó, codifiquemos la explicación anterior en python.
esperado = np.outer(bottles_tab[“row_totals”][0:5]botella_tab.loc[“col_totals”][0:3]) / 1000 esperado = pd.DataFrame(esperado) esperado.columnas = [“Janurary”,”Feburary”,”March”]
índice.esperado = [“paper”,”cans”,”glass”,”others”,”plastic”]
esperado
Aquí, escribiremos la fórmula en Python para calcular el valor estático de chi-cuadrado.
chi_squared_stat = (((observado-esperado)**2)/esperado).sum().sum() print(chi_squared_stat)
Nota: Llamamos a .sum() dos veces, una para obtener las sumas de las columnas y una segunda vez para sumar las sumas de las columnas, devolviendo la suma de toda la tabla 2D.
A continuación, calcularemos el valor p y el valor crítico que ayudarán a aceptar o rechazar la hipótesis nula.
valor_crítico= chi2.ppf(q = 0.95, # Encuentre el valor crítico para un 95% de confianza* df = 8) # df= grado de libertad print(“Valor crítico:”,valor_crítico) p_valor = 1 – chi2.cdf(x= chi_squared_stat, # Encuentra el valor p df=8) print(“Valor P:”,p_value)
Nota: Los grados de libertad para una prueba de independencia son iguales al producto del número de categorías en cada variable menos 1. En este caso tenemos una tabla de 5×3 por lo que df = 4×2 = 8.
En las explicaciones anteriores, hemos visto cómo funciona la prueba de chi-cuadrado. Se puede hacer mediante un método rápido con solo una línea de código, que se proporciona a continuación, sin realizar todos los pasos anteriores:
scipy.stats.chi2_contingency (observado = observado)
Finalmente, obtenemos un valor p de 0.51847 que es mayor que 0.5. Por tanto, aceptaremos la hipótesis nula que dice que no hay relación entre las características. El resultado de la prueba no detecta una relación significativa entre las variables.
Corrección de Yate
En la explicación anterior de la fórmula chi-cuadrado de Pearson, esa fue una falla que fue corregida por Frank Yates, y se conoce como corrección de Yate o Chi-cuadrado de Yate. La fórmula de Chi-cuadrado de Yate se da como:
Oi = una frecuencia observada
mii = una frecuencia esperada (teórica)
norte = número de eventos distintos
Yate corrigió la fórmula chi-cuadrado de Pearson restando la diferencia del valor observado y esperado por 0,5 y el resto es igual al anterior.
Para usar la prueba de chi-cuadrado de Yate, podemos escribir la siguiente línea de código:
scipy.stats.chi2_contingency(df, corrección=Verdadero) #“correction=True” para aplicar la corrección de Yates
Conclusión
Para analizar la relación entre las variables en el conjunto de datos, realizamos una prueba de independencia de Chi-cuadrado en este artículo. Usamos SciPy y comenzamos con datos desde cero. Podríamos aprender cómo implementar esta prueba de manera práctica y cómo hacer inferencias sobre los datos.
Espero que hayas disfrutado leyendo este artículo 🙂
Referencias
- Enlace para los códigos anteriores
- Documentación de Scipy