Prueba T de dos muestras de Python

Migel Hewage Nimesha 15 febrero 2024
  1. Prueba T de dos muestras en Python
  2. Conclusión
Prueba T de dos muestras de Python

La mayoría de los programadores de todo el mundo utilizan el lenguaje Python para programar. Python es muy popular como lenguaje de programación interpretado y de alto nivel.

Dado que la mayoría de los programadores usan Python en la programación orientada a objetos, las personas lo usan en el desarrollo web, la visualización de datos, sectores como la inteligencia artificial y el aprendizaje automático, el desarrollo de back-end y como lenguaje de secuencias de comandos.

Una característica que nos brinda Python es que podemos realizar pruebas t de dos muestras. A través de este artículo, discutiremos qué es una prueba t de dos muestras y cómo realizarla usando Python.

Prueba T de dos muestras en Python

La prueba t de dos muestras es un tipo de prueba que podemos hacer para determinar si las dos medias poblacionales desconocidas de dos grupos de datos son iguales o no. También se denomina prueba t de muestras independientes.

No debe tener ninguna relación para un grupo con otro grupo de datos.

Antes de realizar la prueba t de dos muestras, debemos considerar tres suposiciones sobre los grupos de datos.

  1. Los dos grupos de datos que tomamos para probar son independientes.
  2. Suposición de homogeneidad: Aquí, asumimos que los dos grupos de datos tienen las mismas varianzas.
  3. La última suposición es si la distribución de datos en grupos de datos es diferente.

Con estas suposiciones, podemos realizar una prueba t de dos muestras.

Podemos tomar dos hipótesis al analizar los resultados de la prueba t de dos muestras.

  1. H0 - media de población de dataGroup1 = media de población de dataGroup2. También conocida como hipótesis nula.
  2. HA - media de población de dataGroup1 != media de población de dataGroup2.

Hay tres métodos principales para realizar esta prueba.

  1. Usar scipy
  2. Usar pingouín
  3. Usando modelos estadísticos

Usar la biblioteca SciPy

El SciPy, también conocido como la biblioteca Scientific Python, es una biblioteca Python de código abierto que resuelve problemas científicos y matemáticos. Varios comandos Python de alto nivel están disponibles para manipular y visualizar datos en la biblioteca SciPy.

Varios subpaquetes se encuentran en la biblioteca SciPy. Algunos de ellos son:

  1. scipy.stats: se puede usar para estadísticas y números aleatorios.
  2. scipy.io: se puede usar para la entrada y salida de archivos.
  3. scipy.linalg: se puede usar para operaciones de álgebra lineal.
  4. scipy.signal: se puede utilizar para el procesamiento de señales.

Para realizar una prueba t de dos muestras, podemos usar esta biblioteca SciPy.

La sintaxis para la prueba t de dos muestras se encuentra a continuación.

ttest_ind(dataGroup1, dataGroup2, equal_var=True / False)

Aquí, el ttest_ind es una función proporcionada por el subpaquete scipy.stats donde realizamos la prueba. En su interior tenemos dataGroup1 y dataGroup2, los grupos de datos que creamos.

Si equal_var es igual a true, la prueba t de dos muestras se realizará considerando las varianzas de población iguales. Si es falsa, se realizará la prueba t de Welch considerando que las varianzas poblacionales no son iguales.

Por defecto, equal_var es true.

Comprobar la igualdad de la varianza del grupo de datos

Antes de realizar la prueba, debemos verificar si los grupos de datos tienen la misma varianza. Si obtenemos una relación entre el grupo de datos grande y el grupo de datos pequeño por debajo de 4:1, podemos decir que ambos grupos de datos tienen la misma varianza.

Para verificarlo, podemos usar la siguiente sintaxis.

np.var(dataGroup1), np.var(dataGroup2)

Realicemos una prueba t usando un ejemplo.

Imagine que tenemos dos grupos de datos de muestra donde cada grupo contiene las calificaciones de 10 estudiantes para un tema determinado. Hay que aclarar que los alumnos de los dos grupos tienen las mismas notas medias en la asignatura.

Como primer paso, debemos instalar las bibliotecas SciPy y NumPy usando el comando pip.

$ pip install scipy
$ pip install numpy

Luego debemos importar la sub-biblioteca scipy.stats y NumPy a nuestro entorno. Como se mencionó anteriormente, scipy.stats nos ayudará a hacer la prueba, mientras que NumPy nos ayudará a crear los grupos de datos.

Podemos importar esos dos módulos de la siguiente manera.

import scipy.stats as stats
import numpy as np

Entonces podemos crear los dos grupos con algunos datos de la siguiente manera.

dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

En primer lugar, podemos verificar la igualdad de las varianzas de los grupos de datos de la siguiente manera.

print(np.var(dataGroup1), np.var(dataGroup2))

Después de ejecutar el código, obtendremos una salida como se muestra en la imagen a continuación.

Comprobar la igualdad

Como puedes ver, la relación es 10.809/8.49, que es inferior a 4:1. Entonces podemos decir que las varianzas de los grupos de datos son iguales.

Ahora vamos a realizar la prueba.

print(stats.ttest_ind(dataGroup1, dataGroup2, equal_var=True))

Producción:

estadísticas

Aquí el valor p que obtuvimos es 0.2889, que es mayor que el valor alfa, que es 0,05. Por lo tanto podemos afirmar que las notas medias de los alumnos de los dos grupos no son diferentes, que es la hipótesis nula (Según las dos hipótesis que mencionamos anteriormente).

Código completo:

# Importing the libraries
import scipy.stats as stats
import numpy as np

# Defining the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

# Check the equality of the variances of the data groups
print(np.var(dataGroup1), np.var(dataGroup2))

# Executing the test
print(stats.ttest_ind(dataGroup1, dataGroup2, equal_var=True))

Usar la biblioteca pingouin

Otra forma en que podemos realizar una prueba t de dos muestras es usando el paquete pingouin. Es un paquete de código abierto basado en NumPy y pandas con características estadísticas.

Para usar pingouin, necesitamos instalarlo usando el comando pip.

$ pip install pingouin

Entonces podemos usar la siguiente sintaxis para realizar la prueba t.

ttest(dataGroup1, dataGroup2, correction=True / False)

Aquí la función ttest la proporciona el paquete pingouin. dataGroup1 y dataGroup2 son los grupos que tomamos para probar.

Si la corrección es verdadera, la prueba se realizará considerando el supuesto de homogeneidad. Si es falsa, como antes, realiza la prueba t de Welch, sin considerar el supuesto de homogeneidad.

Tomemos el ejemplo anterior para realizar la prueba t. En primer lugar, podemos importar los paquetes NumPy y pingouin.

import pingouin as pg
import numpy as np

Luego definimos los grupos de datos.

dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

Ahora podemos hacer la prueba.

print(pg.ttest(dataGroup1, dataGroup2, correction=True))

Producción:

pingüin

Como puedes ver, tendremos 0.2891 como p-value, que es mayor que el valor alfa, que es 0.05. Determina que las notas medias de los dos grupos no tienen diferencia estadística.

Código completo:

# Importing the libraries
import pingouin as pg
import numpy as np

# Defining the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

# Executing the test
print(pg.ttest(dataGroup1, dataGroup2, correction=True))

Utilice el módulo statsmodels

Statsmodels es un módulo de Python basado en SciPy, NumPy y Matplotlib. Da a los usuarios funciones y clases para realizar pruebas estadísticas y estimaciones.

También podemos realizar pruebas t de dos muestras utilizando el módulo statsmodels. Deberíamos instalar el módulo usando el comando pip para usar esto.

$ pip install statsmodels

Podemos usar la siguiente sintaxis para realizar pruebas t.

ttest_ind(dataGroup1, dataGroup2)

ttest_ind es la función que usamos para realizar la prueba, y dataGroup1 y dataGroup2 son los grupos que tomamos para probar.

Probemos la prueba usando el ejemplo anterior.

Primero, necesitamos importar la función ttest_ind de statsmodels. Luego podemos importar la biblioteca numpy.

from statsmodels.stats.weightstats import ttest_ind
import numpy as np

Ahora, podemos definir los grupos de datos como lo hicimos anteriormente.

dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

Entonces podemos realizar la prueba a continuación.

print(ttest_ind(dataGroup1, dataGroup2))

Producción:

modelos estadisticos

Como puede ver, recibimos 0.2889 como el “valor p”, que es mayor que el valor “alfa”. Por tanto, podemos decir que las notas medias de los grupos de estudiantes no son estadísticamente diferentes de los demás.

Código completo:

# Importing libraries
from statsmodels.stats.weightstats import ttest_ind
import numpy as np

# Definig the data groups
dataGroup1 = np.array([17, 16, 14, 19, 20, 21, 15, 13, 14, 12])
dataGroup2 = np.array([19, 19, 14, 17, 22, 24, 16, 18, 15, 13])

# Executing the test
print(ttest_ind(dataGroup1, dataGroup2))

Conclusión

A través de este artículo, discutimos qué es una prueba t de dos muestras y cómo realizarla en Python. Como aprendimos, hay tres métodos principales para hacer la prueba: usando SciPy, pingouin y statsmodels.

Esos tres métodos requieren diferentes bibliotecas y funciones para realizar las pruebas.

Tomamos un ejemplo para entender el concepto y lo aplicamos a todos los métodos. Luego analizamos los resultados usando la hipótesis y los supuestos.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.