Introdução
Este tutorial demonstra como plotar a função de distribuição cumulativa empírica (ECDF - empirical cumulative distribution function) de uma amostra e a CDF teórica usando Matplotlib. ECDFs também são conhecidas como curvas de "não-excedência" em engenharia, onde o valor y para um determinado valor x fornece a probabilidade de que uma observação da amostra esteja abaixo desse valor x. Por outro lado, a função de distribuição cumulativa complementar empírica (a ECCDF, ou curva de "excedência") mostra a probabilidade y de que uma observação da amostra esteja acima de um valor x.
Dicas para a VM
Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.
Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.
Importar as bibliotecas necessárias
Nesta etapa, importaremos as bibliotecas necessárias. Usaremos as bibliotecas NumPy e Matplotlib para este tutorial.
import matplotlib.pyplot as plt
import numpy as np
Definir a semente aleatória e gerar os dados
Nesta etapa, definiremos a semente aleatória e geraremos os dados. Geraremos 100 pontos de dados de uma distribuição normal com média 200 e desvio padrão 25.
np.random.seed(19680801)
mu = 200
sigma = 25
data = np.random.normal(mu, sigma, size=100)
Criar a figura e os subplots
Nesta etapa, criaremos uma figura com dois subplots para as distribuições cumulativas. Também definiremos o tamanho da figura para 9x4.
fig = plt.figure(figsize=(9, 4), layout="constrained")
axs = fig.subplots(1, 2, sharex=True, sharey=True)
Plotar as distribuições cumulativas
Nesta etapa, plotaremos as distribuições cumulativas. Usaremos o método .ecdf para plotar a ECDF (Empirical Cumulative Distribution Function - Função de Distribuição Cumulativa Empírica) e a ECDF complementar. Também plotaremos a CDF teórica usando uma distribuição normal com média 200 e desvio padrão 25.
## Cumulative distributions
axs[0].ecdf(data, label="CDF")
n, bins, patches = axs[0].hist(data, 25, density=True, histtype="step",
cumulative=True, label="Cumulative histogram")
x = np.linspace(data.min(), data.max())
y = ((1 / (np.sqrt(2 * np.pi) * sigma)) *
np.exp(-0.5 * (1 / sigma * (x - mu))**2))
y = y.cumsum()
y /= y[-1]
axs[0].plot(x, y, "k--", linewidth=1.5, label="Theory")
## Complementary cumulative distributions
axs[1].ecdf(data, complementary=True, label="CCDF")
axs[1].hist(data, bins=bins, density=True, histtype="step", cumulative=-1,
label="Reversed cumulative histogram")
axs[1].plot(x, 1 - y, "k--", linewidth=1.5, label="Theory")
Rotular a figura
Nesta etapa, rotularemos a figura. Adicionaremos um título, linhas de grade e rótulos para os eixos x e y.
fig.suptitle("Cumulative Distributions")
for ax in axs:
ax.grid(True)
ax.legend()
ax.set_xlabel("Annual rainfall (mm)")
ax.set_ylabel("Probability of occurrence")
ax.label_outer()
plt.show()
Resumo
Neste tutorial, aprendemos como plotar a função de distribuição cumulativa empírica (ECDF - Empirical Cumulative Distribution Function) e a CDF teórica usando Matplotlib. Também aprendemos como plotar a função de distribuição cumulativa complementar empírica (ECCDF - Empirical Complementary Cumulative Distribution Function) e o histograma cumulativo invertido. Seguindo as etapas descritas neste tutorial, você agora deve ser capaz de criar seus próprios gráficos de distribuição cumulativa usando Matplotlib.