Usando histogramas para plotar uma distribuição cumulativa #

Isso mostra como plotar um histograma normalizado cumulativo como uma função degrau para visualizar a função de distribuição cumulativa empírica (CDF) de uma amostra. Mostramos também o CDF teórico.

Algumas outras opções para a histfunção são demonstradas. Ou seja, usamos o parâmetro normado para normalizar o histograma e algumas opções diferentes para o parâmetro cumulativo . O parâmetro normado assume um valor booleano. Quando True, as alturas dos compartimentos são dimensionadas de forma que a área total do histograma seja 1. O argumento da palavra-chave cumulativa é um pouco mais nuançado. Como normed , você pode passar True ou False, mas também pode passar -1 para inverter a distribuição.

Como estamos mostrando um histograma normalizado e cumulativo, essas curvas são efetivamente as funções de distribuição cumulativa (CDFs) das amostras. Na engenharia, os CDFs empíricos às vezes são chamados de curvas de "não excedência". Em outras palavras, você pode olhar para o valor y para um determinado valor x para obter a probabilidade e a observação da amostra não excedendo esse valor x. Por exemplo, o valor de 225 no eixo x corresponde a cerca de 0,85 no eixo y, então há uma chance de 85% de que uma observação na amostra não exceda 225. Por outro lado, definir, cumulativepara -1 como é feito em a última série para este exemplo, cria uma curva de "excedência".

A seleção de diferentes contagens e tamanhos de compartimentos pode afetar significativamente a forma de um histograma. Os documentos do Astropy têm uma ótima seção sobre como selecionar esses 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 passos cumulativos

Referências

O uso das seguintes funções, métodos, classes e módulos é mostrado neste exemplo:

Galeria gerada por Sphinx-Gallery