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()
출력:
주어진 분포에 대해 PMF
와 CDF
를 플로팅합니다. 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()
출력:
여기에서는 각 X 값에 대한 주파수 값이 제공됩니다. 주파수의 합으로pdf
배열의 각 요소를 나누어 주파수 값을pdf
값으로 변환합니다. 그런 다음pdf
를 사용하여CDF
값을 계산하여 주어진 데이터의CDF
를 플로팅합니다.
또한 히스토그램 플롯을 사용하여CDF
및PDF
플롯을 볼 수 있으며, 이는 개별 데이터에 대해 더 직관적입니다.
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()
출력:
hist()
메서드를 사용하여 주어진 데이터의CDF
와PDF
를 플로팅합니다. 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()
출력:
주어진 연속 분포에 대해 PMF
와 CDF
를 플로팅합니다. CDF
의 y- 값을 계산하기 위해numpy.cumsum()
메서드를 사용하여 배열의 누적 합계를 계산합니다.
y
를y
에dx
를 곱한 값의 합으로 나누어CDF
값의 범위가 0에서 1이되도록 값을 정규화합니다.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn