CDF Matplotlib Python 플롯

Suraj Joshi 2021년2월9일
CDF Matplotlib Python 플롯

이 튜토리얼은 Python에서 Matplotlib를 사용하여CDF 플롯을 생성하는 방법을 설명합니다. CDF는 임의의 변수가 해당 x 값보다 작거나 같은 값을 가질 확률을 y 값이 나타내는 함수입니다.

Python에서 Matplotlib를 사용하여 CDF 플로팅

CDF는 연속 및 이산 확률 분포 모두에 대해 정의됩니다. 연속 확률 분포에서 랜덤 변수는 지정된 범위의 값을 취할 수 있지만 이산 확률 분포에서는 지정된 값 세트 만 가질 수 있습니다.

Python에서 Matplotlib를 사용하여 이산 분포를위한 CDF 플로팅

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 7)
y = [0.2, 0.1, 0.1, 0.2, 0.1, 0.3]
cdf = np.cumsum(y)

plt.plot(x, y, marker="o", label="PMF")
plt.plot(x, cdf, marker="o", label="CDF")
plt.xlim(0, 7)
plt.ylim(0, 1.5)
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for discrete distribution")
plt.legend()
plt.show()

출력:

Python에서 Matplotlib를 사용하여 이산 분포를위한 CDF 플로팅

주어진 분포에 대해 PMFCDF를 플로팅합니다. CDF에 대한 y- 값을 계산하기 위해numpy.cumsum()메서드를 사용하여 배열의 누적 합계를 계산합니다.

빈도 수가 주어지면 처음에 PDF를 나타내도록 y- 값을 정규화해야합니다.

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(1, 7)
frequency = np.array([3, 8, 4, 5, 3, 6])
pdf = frequency / np.sum(frequency)
cdf = np.cumsum(pdf)

plt.plot(x, pdf, marker="o", label="PMF")
plt.plot(x, cdf, marker="o", label="CDF")
plt.xlim(0, 7)
plt.ylim(0, 1.5)
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for discrete distribution")
plt.legend()
plt.show()

출력:

정규화 후 Python에서 Matplotlib를 사용하여 이산 분포를위한 CDF 플로팅

여기에서는 각 X 값에 대한 주파수 값이 제공됩니다. 주파수의 합으로pdf 배열의 각 요소를 나누어 주파수 값을pdf 값으로 변환합니다. 그런 다음pdf를 사용하여CDF 값을 계산하여 주어진 데이터의CDF를 플로팅합니다.

또한 히스토그램 플롯을 사용하여CDFPDF 플롯을 볼 수 있으며, 이는 개별 데이터에 대해 더 직관적입니다.

import numpy as np
import matplotlib.pyplot as plt

data = [3, 4, 2, 3, 4, 5, 4, 7, 8, 5, 4, 6, 2, 1, 0, 9, 7, 6, 6, 5, 4]
plt.hist(data, bins=9, density=True)
plt.hist(data, bins=9, density=True, cumulative=True, label="CDF", histtype="step")
plt.xlabel("X")
plt.ylabel("Probability")
plt.xticks(np.arange(0, 10))
plt.title("CDF using Histogram Plot")
plt.show()

출력:

히스토그램 도표를 사용하여 이산 분포에 대한 CDF 도표화

hist()메서드를 사용하여 주어진 데이터의CDFPDF를 플로팅합니다. CDF를 플로팅하기 위해cumulative=True를 설정하고density=True를 설정하여 합계가 1 인 확률 값을 나타내는 히스토그램을 얻습니다.

Python에서 Matplotlib를 사용하여 연속 분포를위한 CDF플로팅

import numpy as np
import matplotlib.pyplot as plt

dx = 0.005
x = np.arange(-10, 10, dx)
y = 0.25 * np.exp((-(x ** 2)) / 8)

y = y / (np.sum(dx * y))
cdf = np.cumsum(y * dx)

plt.plot(x, y, label="pdf")
plt.plot(x, cdf, label="cdf")
plt.xlabel("X")
plt.ylabel("Probability Values")
plt.title("CDF for continuous distribution")
plt.legend()
plt.show()

출력:

Python에서 Matplotlib를 사용하여 연속 분포를위한 CDF 플로팅

주어진 연속 분포에 대해 PMFCDF를 플로팅합니다. CDF의 y- 값을 계산하기 위해numpy.cumsum()메서드를 사용하여 배열의 누적 합계를 계산합니다.

yydx를 곱한 값의 합으로 나누어CDF 값의 범위가 0에서 1이되도록 값을 정규화합니다.

작가: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn