Distribuciones probabilísticas y variables aleatorias: representando aleatoriedad
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
def ecdf(data):
"""Compute ECDF for a one-dimensional array of measurements."""
# Number of data points: n
n = len(data)
# x-data for the ECDF: x
x = np.sort(data)
# y-data for the ECDF: y
y = np.arange(1, n+1) / n
return x, y
plt.style.use('ggplot')
Distribución uniforme
uniform_samples = np.random.uniform(0, 6, size=10000)
fig, ax = plt.subplots()
plt.hist(uniform_samples, density=True, bins=6)
plt.title('Distribución uniforme', size=14)
plt.xlabel('Muestras')
plt.ylabel('Densidad')
plt.axhline(1/6, color='#3793ef', linestyle='--')
plt.show()
Distribución binomial
binomial_samples = np.random.binomial(10, 0.5, size=10000)
fig, ax = plt.subplots()
plt.hist(binomial_samples, density=True, bins=11)
plt.title('Distribución binomial', size=14)
plt.xlabel('Muestras')
plt.ylabel('Densidad')
plt.axvline(10*0.5, color='#3793ef', linestyle='--')
plt.axvline(0, color='#3793ef', linestyle='--')
plt.axvline(10, color='#3793ef', linestyle='--')
plt.show()
Distribución de Poisson
poisson_samples = np.random.poisson(3, 10000)
fig, ax = plt.subplots()
plt.hist(poisson_samples, density=True, bins=10)
plt.title('Distribución de Poisson', size=14)
plt.xlabel('Muestras')
plt.ylabel('Densidad')
plt.axvline(3, color='#3793ef', linestyle='--')
plt.show()
Distribución exponencial
exponential_samples = np.random.exponential(3, 10000)
fig, ax = plt.subplots()
plt.hist(exponential_samples, density=True, bins=100)
plt.title('Distribución exponencial', size=14)
plt.xlabel('Muestras')
plt.ylabel('Densidad')
plt.show()
Distribución normal
normal_samples = np.random.normal(0, 1, size=10000)
fig, ax = plt.subplots()
plt.hist(normal_samples, bins=50, density=True)
plt.title('Distribución normal', size=14)
plt.xlabel('Muestras')
plt.ylabel('Densidad')
plt.axvline(0, color='#3793ef', linestyle='--')
plt.axvline(np.std(normal_samples), color='#3793ef', linestyle='--')
plt.axvline(-1*np.std(normal_samples), color='#3793ef', linestyle='--')
plt.show()
Empirical cumulative distribution function (ECDF)
x_norm, y_norm = ecdf(normal_samples)
fig, ax = plt.subplots()
plt.plot(x_norm, y_norm)
plt.title('ECDF de distribución normal', size=14)
plt.xlabel('Muestras')
plt.ylabel('Probabilidad acumulada')
plt.axvline(0, color='#3793ef', linestyle='--')
plt.axhline(0.5, color='#3793ef', linestyle='--')
plt.show()
x_exp, y_exp = ecdf(exponential_samples)
fig, ax = plt.subplots()
plt.plot(x_exp, y_exp)
plt.title('ECDF de distribución exponencial', size=14)
plt.xlabel('Muestras')
plt.ylabel('Probabilidad acumulada')
plt.show()