Uso de histogramas para trazar una distribución acumulativa #

Esto muestra cómo trazar un histograma acumulativo y normalizado como una función escalonada para visualizar la función de distribución acumulativa empírica (CDF) de una muestra. También mostramos la CDF teórica.

Se muestran un par de otras opciones para la histfunción. Es decir, usamos el parámetro normado para normalizar el histograma y un par de opciones diferentes para el parámetro acumulativo . El parámetro normado toma un valor booleano. Cuando True, las alturas de los contenedores se escalan de manera que el área total del histograma sea 1. El argumento de la palabra clave acumulativa tiene un poco más de matices. Al igual que normad , puede pasarle True o False, pero también puede pasarle -1 para invertir la distribución.

Dado que estamos mostrando un histograma normalizado y acumulativo, estas curvas son efectivamente las funciones de distribución acumulativa (CDF) de las muestras. En ingeniería, las CDF empíricas a veces se denominan curvas de "no excedencia". En otras palabras, puede mirar el valor de y para un valor de x dado para obtener la probabilidad y la observación de la muestra que no exceda ese valor de x. Por ejemplo, el valor de 225 en el eje x corresponde a alrededor de 0,85 en el eje y, por lo que hay un 85 % de posibilidades de que una observación en la muestra no supere los 225. Por el contrario, establecer cumulative-1 como se hace en la última serie de este ejemplo crea una curva de "superación".

La selección de diferentes recuentos y tamaños de contenedores puede afectar significativamente la forma de un histograma. Los documentos de Astropy tienen una gran sección sobre cómo seleccionar estos parámetros: http://docs.astropy.org/en/stable/visualization/histogram.html

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(19680801)

mu = 200
sigma = 25
n_bins = 50
x = np.random.normal(mu, sigma, size=100)

fig, ax = plt.subplots(figsize=(8, 4))

# plot the cumulative histogram
n, bins, patches = ax.hist(x, n_bins, density=True, histtype='step',
                           cumulative=True, label='Empirical')

# Add a line showing the expected distribution.
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
     np.exp(-0.5 * (1 / sigma * (bins - mu))**2))
y = y.cumsum()
y /= y[-1]

ax.plot(bins, y, 'k--', linewidth=1.5, label='Theoretical')

# Overlay a reversed cumulative histogram.
ax.hist(x, bins=bins, density=True, histtype='step', cumulative=-1,
        label='Reversed emp.')

# tidy up the figure
ax.grid(True)
ax.legend(loc='right')
ax.set_title('Cumulative step histograms')
ax.set_xlabel('Annual rainfall (mm)')
ax.set_ylabel('Likelihood of occurrence')

plt.show()
Histogramas de pasos acumulativos

Referencias

En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos:

Galería generada por Sphinx-Gallery