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