Desmistificando Estadísticas y Probabilidades en Ciencia de Datos
Published on
Las estadísticas y la probabilidad son la base de la Ciencia de Datos. Comprender estos conceptos nos proporciona las herramientas para analizar, interpretar y sacar conclusiones de los grandes conjuntos de datos con los que lidiamos a diario. Este artículo explorará conceptos clave, ejemplos prácticos y fragmentos de código en Python para ilustrar cada punto.
Distribución de Probabilidad
La distribución de probabilidad describe cómo se distribuyen las probabilidades en los valores de las variables aleatorias. En el caso de variables discretas, a menudo utilizamos la distribución uniforme, donde cada resultado tiene la misma probabilidad.
Para ilustrar esto, consideremos un dado justo de seis caras. La distribución de probabilidad de los resultados sería uniforme, con cada número del 1 al 6 teniendo una probabilidad igual de 1/6.
import numpy as np
resultados = [1, 2, 3, 4, 5, 6]
probabilidades = np.full(6, 1/6)
print(f'Distribución de Probabilidad de un Dado Justo:')
for resultado, probabilidad in zip(resultados, probabilidades):
print(f'P(X={resultado}) = {probabilidad}')
Cuando se trata de variables continuas, como el tiempo de llegada de un autobús, utilizamos funciones de densidad de probabilidad (PDF). Las PDF indican la probabilidad de que una variable caiga dentro de un cierto rango de valores.
Un ejemplo de una distribución de probabilidad continua conocida es la distribución normal, también conocida como la distribución gaussiana. Se caracteriza por su curva en forma de campana.
import matplotlib.pyplot as plt
import numpy as np
# Generar muestras aleatorias a partir de una distribución normal
media = 0 # media
desviacion_std = 1 # desviación estándar
muestras = np.random.normal(media, desviacion_std, 1000)
# Graficar el histograma de las muestras
plt.hist(muestras, bins=30, density=True, alpha=0.7)
plt.xlabel('Valor')
plt.ylabel('Densidad de Probabilidad')
plt.title('Distribución Normal')
plt.show()
Media, Varianza y Desviación Estándar
La media es el valor promedio de un conjunto de datos. Se calcula sumando todos los valores y dividiendo por el número de valores.
La varianza mide qué tan lejos está cada número del conjunto de datos de la media. Cuantifica la dispersión o dispersión de los datos. La desviación estándar es la raíz cuadrada de la varianza y proporciona una medida de la cantidad de variación en el conjunto de datos.
import numpy as np
datos = np.random.normal(0, 1, 1000) # Generando una distribución normal con media 0 y desviación estándar 1
media = np.mean(datos)
varianza = np.var(datos)
desviacion_std = np.std(datos)
print(f'Media: {media:.2f}')
print(f'Varianza: {varianza:.2f}')
print(f'Desviación Estándar: {desviacion_std:.2f}')
Moda, Mediana y Cuartiles
La moda es el valor que aparece con mayor frecuencia en un conjunto de datos. Indica el pico o el valor más común en la distribución.
La mediana es el valor medio que separa la mitad superior de la mitad inferior de una muestra de datos. Es útil cuando se trata de datos sesgados o valores atípicos.
Los cuartiles dividen un conjunto de datos ordenados por rango en cuatro partes iguales. El primer cuartil (Q1) es el valor por debajo del cual cae el 25% de los datos, el segundo cuartil (Q2) es la mediana y el tercer cuartil (Q3) es el valor por debajo del cual cae el 75% de los datos.
import numpy as np
datos = np.array([3, 7, 1, 5, 2, 9, 4, 6, 8, 2])
moda = np.argmax(np.bincount(datos))
mediana = np.median(datos)
q1 = np.percentile(datos, 25)
q3 = np.percentile(datos, 75)
print(f'Moda: {moda}')
print(f'Mediana: {mediana}')
print(f'Primer Cuartil (Q1): {q1}')
print(f'Tercer Cuartil (Q3): {q3}')
Datos del Mundo Real y Distribución Normal
Los datos del mundo real a menudo siguen una distribución normal. Por ejemplo, los pesos de los jugadores de béisbol pueden seguir una distribución normal con cierta media y desviación estándar. Conociendo estos parámetros, podemos generar muestras aleatorias que imitan los posibles pesos de los jugadores de béisbol.
import numpy as np
media = 180
desviacion_std = 10
tamano_muestra = 1000
pesos = np.random.normal(media, desviacion_std, tamano_muestra)
print(f'Muestras de pesos de posibles jugadores de béisbol:')
print(pesos[:10])
Intervalos de Confianza
Los intervalos de confianza proporcionan un rango dentro del cual se encuentra el verdadero parámetro de la población con un cierto grado de confianza. Son cruciales para estimar la media y la varianza de una población a partir de una muestra.
Para calcular un intervalo de confianza, necesitamos conocer la media muestral, la desviación estándar muestral, el tamaño de la muestra y el nivel de confianza deseado. Supongamos que queremos calcular un intervalo de confianza del 95% para la media de una variable distribuida normalmente.
import numpy as np
from scipy.stats import norm
datos = np.random.normal(0, 1, 100) # Generando una muestra a partir de una distribución normal
nivel_confianza = 0.95
media_muestral = np.mean(datos)
desviacion_std_muestral = np.std(datos)
tamano_muestra = len(datos)
z_score = norm.ppf((1 + nivel_confianza) / 2)
margen_de_error = z_score * (desviacion_std_muestral / np.sqrt(tamano_muestra))
intervalo_de_confianza = (media_muestral - margen_de_error, media_muestral + margen_de_error)
print(f'Intervalo de Confianza del 95%: {intervalo_de_confianza}')
Pruebas de Hipótesis
Las pruebas de hipótesis nos permiten hacer inferencias sobre la población examinando las diferencias entre los datos de muestra observados y los resultados que esperaríamos bajo la hipótesis nula, que a menudo propone la falta de efecto o la falta de diferencia.
Una prueba de hipótesis común es la prueba t, que se utiliza para comparar las medias de dos muestras. El paquete SciPy proporciona la función ttest_ind
para realizar pruebas t.
from scipy.stats import ttest_ind
muestra1 = np.random.normal(0, 1, 100)
muestra2 = np.random.normal(1, 1, 100)
estadistico_t, valor_p = ttest_ind(muestra1, muestra2)
```python
print(f'Estadística T: {t_statistic:.2f}')
print(f'Valor P: {p_value:.2f}')
Covarianza y Correlación
La covarianza mide cómo dos variables se mueven en relación entre sí. Nos da la dirección de la relación entre las variables. Por otro lado, la correlación no solo nos da la dirección, sino también la fuerza de la relación.
import numpy as np
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([5, 4, 3, 2, 1])
covarianza = np.cov(data1, data2)[0, 1]
correlacion = np.corrcoef(data1, data2)[0, 1]
print(f'Covarianza: {covarianza:.2f}')
print(f'Correlación: {correlacion:.2f}')
Entender la probabilidad y la estadística es fundamental para cualquier científico de datos. Estos conceptos proporcionan las herramientas y técnicas para analizar datos, tomar decisiones informadas y obtener ideas significativas. Al aplicar estos principios y utilizar las potentes bibliotecas de Python, podemos desbloquear todo el potencial de la ciencia de datos.
Conclusión
En conclusión, comprender los conceptos de estadística y probabilidad es crucial para cualquier persona que trabaje en el campo de la Ciencia de Datos. Al dominar estos conceptos, estarás bien equipado para obtener ideas significativas a partir de los datos, diseñar modelos de aprendizaje automático robustos y tomar decisiones informadas.