Comparación entre distribuciones
El siguiente código en Python muestra tres distribuciones con diferente desviación típica, se puede ver que a mayor desviación, mayor aplanamiento
import numpy as np
import matplotlib.pyplot as plt
# Configuración de la semilla para reproducibilidad
np.random.seed(0)
# Parámetros de las distribuciones
mu = 0 # Media
sigma1 = 1 # Desviación estándar para la primera distribución
sigma2 = 2 # Desviación estándar para la segunda distribución
sigma3 = 5 # Desviación estándar para la tercera distribución
n_samples = 1000 # Número de muestras
# Generar datos de las distribuciones normales
data1 = np.random.normal(mu, sigma1, n_samples)
data2 = np.random.normal(mu, sigma2, n_samples)
data3 = np.random.normal(mu, sigma3, n_samples)
# Configuración de la gráfica
plt.figure(figsize=(10, 6))
# Graficar histogramas de las dos distribuciones
plt.hist(data1, bins=30, color='blue', density=True, label='Desviación Estándar = 1', alpha=0.5)
plt.hist(data2, bins=30, color='red', density=True, label='Desviación Estándar = 2', alpha=0.5)
plt.hist(data3, bins=30, color='green', density=True, label='Desviación Estándar = 5', alpha=0.5)
# Personalizar la gráfica
plt.title('Comparación de Distribuciones Normales usando np.random.normal')
plt.xlabel('Valor')
plt.ylabel('Densidad')
plt.axhline(0, color='black', linewidth=0.5, ls='--')
plt.axvline(0, color='black', linewidth=0.5, ls='--')
plt.legend()
plt.grid()
# Mostrar la gráfica
plt.show()
Otro ejemplo con valores discretos:
import numpy as np
import matplotlib.pyplot as plt
# Generar una distribución normal con media 0 y desviación estándar 5
mu, sigma = 0, 3
size = 1000 # Tamaño de la muestra
# Generar valores continuos
data_continua = np.random.normal(mu, sigma, size)
data_continua2 = np.random.normal(mu, 8, size)
# Redondear a los valores enteros (discretos)
data_discreta = np.rint(data_continua)
data_discreta2 = np.rint(data_continua2)
# Filtrar valores entre -20 y 20
data_discreta = data_discreta[(data_discreta >= -20) & (data_discreta <= 20)]
data_discreta2 = data_discreta2[(data_discreta >= -20) & (data_discreta <= 20)]
# Graficar los resultados
plt.hist(data_discreta, bins=41, range=(-20, 20), edgecolor='black', alpha=0.7)
plt.hist(data_discreta2, bins=41, range=(-20, 20),color='red', edgecolor='yellow', alpha=0.5)
plt.title('Distribución Normal Discreta entre -20 y 20')
plt.xlabel('Valor')
plt.ylabel('Frecuencia')
plt.show()