Traccia CDF Matplotlib Python
Questo tutorial spiega come possiamo generare un grafico CDF
usando Matplotlib in Python. CDF
è la funzione i cui valori y rappresentano la probabilità che una variabile casuale assuma valori minori o uguali al valore x corrispondente.
Traccia CDF usando Matplotlib in Python
CDF è definito per distribuzioni di probabilità sia continue che discrete. Nella distribuzione di probabilità continua, la variabile casuale può assumere qualsiasi valore dall’intervallo specificato, ma nella distribuzione di probabilità discreta, possiamo avere solo un insieme di valori specificato.
Traccia CDF per la distribuzione discreta utilizzando Matplotlib in Python
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()
Produzione:
Traccia il PMF
e il CDF
per la distribuzione data. Per calcolare i valori y per CDF
, usiamo il metodo numpy.cumsum()
per calcolare la somma cumulativa di un array.
Se ci vengono dati i conteggi di frequenza, dobbiamo normalizzare inizialmente i valori y in modo che rappresentino il PDF
.
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()
Produzione:
Qui ci vengono dati i valori di frequenza per ogni valore X. Convertiamo i valori di frequenza in valori pdf
dividendo ogni elemento dell’array pdf
per la somma delle frequenze. Quindi usiamo il pdf
per calcolare i valori CDF
per tracciare il CDF
di dati dati.
Possiamo anche utilizzare grafici a istogramma per visualizzare i grafici CDF
e PDF
, che saranno più intuitivi per dati discreti.
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()
Produzione:
Traccia il CDF
e il PDF
di dati dati utilizzando il metodo hist()
. Per tracciare il CDF
, impostiamo cumulative=True
e impostiamo density=True
per ottenere un istogramma che rappresenti i valori di probabilità che sommano a 1.
Traccia CDF
per la distribuzione continua usando Matplotlib in Python
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()
Produzione:
Traccia il PMF
e il CDF
per la distribuzione continua data. Per calcolare i valori y per CDF
, usiamo il metodo numpy.cumsum()
per calcolare la somma cumulativa di un array.
Dividiamo y
per la somma dell’array y
moltiplicato per dx
per normalizzare i valori in modo che i valori di CDF
siano compresi tra 0 e 1.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn