히스토그램을 사용하여 누적 분포 그리기 #

샘플의 경험적 누적 분포 함수(CDF)를 시각화하기 위해 누적 정규화된 히스토그램을 단계 함수로 플로팅하는 방법을 보여줍니다. 이론적 CDF도 보여줍니다.

함수 에 대한 몇 가지 다른 옵션 hist이 시연됩니다. 즉, 정규화된 매개변수를 사용 하여 히스토그램 을 정규화하고 누적 매개변수 에 대한 몇 가지 다른 옵션을 사용합니다. 규범 매개변수 는 부울 값을 사용합니다. True이면 히스토그램의 총 면적이 1이 되도록 빈 높이가 조정됩니다. 누적 키워드 인수는 약간 더 미묘합니다. normed 와 마찬가지로 True 또는 False를 전달할 수 있지만 -1을 전달하여 분포를 뒤집을 수도 있습니다.

정규화된 누적 히스토그램을 표시하고 있으므로 이러한 곡선은 사실상 샘플의 누적 분포 함수(CDF)입니다. 공학에서는 경험적 CDF를 "비초과" 곡선이라고도 합니다. 즉, 주어진 x값에 대한 y값을 보고 해당 x값을 초과하지 않는 표본의 확률과 관찰을 얻을 수 있습니다. 예를 들어, x축의 값 225는 y축의 약 0.85에 해당하므로 표본의 관측치가 225를 초과하지 않을 확률은 85%입니다 cumulative. 이 예제의 마지막 시리즈는 "초과" 곡선을 만듭니다.

다른 Bin 도수와 크기를 선택하면 히스토그램의 모양에 상당한 영향을 미칠 수 있습니다. Astropy 문서에는 이러한 매개변수를 선택하는 방법에 대한 훌륭한 섹션이 있습니다. 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()
누적 단계 히스토그램

참조

다음 함수, 메서드, 클래스 및 모듈의 사용이 이 예제에 표시됩니다.

Sphinx-Gallery에서 생성한 갤러리