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.
- Los dos grupos de datos que tomamos para probar son independientes.
- Suposición de homogeneidad: Aquí, asumimos que los dos grupos de datos tienen las mismas varianzas.
- 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.
H0
-media de población de dataGroup1 = media de población de dataGroup2
. También conocida como hipótesis nula.HA
-media de población de dataGroup1 != media de población de dataGroup2
.
Hay tres métodos principales para realizar esta prueba.
- Usar
scipy
- Usar
pingouín
- 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:
scipy.stats
: se puede usar para estadísticas y números aleatorios.scipy.io
: se puede usar para la entrada y salida de archivos.scipy.linalg
: se puede usar para operaciones de álgebra lineal.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.
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:
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:
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:
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.
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.