Trazar CDF Matplotlib Python
Este tutorial explica cómo podemos generar un gráfico de CDF usando la Matplotlib en Python. CDF
es la función cuyos valores y representan la probabilidad de que una variable aleatoria tome los valores menores o iguales al valor x correspondiente.
Trazar CDF usando Matplotlib en Python
La FCD se define para distribuciones de probabilidad tanto continuas como discretas. En la distribución de probabilidad continua, la variable aleatoria puede tomar cualquier valor del rango especificado, pero en la distribución de probabilidad discreta, sólo podemos tener un conjunto de valores especificado.
Gráfica CDF para la distribución discreta usando Matplotlib en 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()
Producción:
Traza el PMF
y el CDF
para la distribución dada. Para calcular los valores y de CDF
, usamos el método numpy.cumsum()
para calcular la suma acumulada de un array.
Si se nos dan los recuentos de frecuencia, debemos normalizar los valores y inicialmente para que representen el 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()
Producción:
Aquí se nos dan los valores de frecuencia para cada valor X. Convertimos los valores de frecuencia en valores de pdf
dividiendo cada elemento del conjunto de pdf
por la suma de frecuencias. Luego usamos el pdf
para calcular los valores CDF
para trazar el CDF
de los datos dados.
También podemos usar gráficos de histograma para ver los gráficos CDF
y PDF
, que serán más intuitivos para los datos discretos.
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()
Producción:
Traza el CDF
y el PDF
de los datos dados usando el método hist()
. Para trazar el CDF
, establecemos cumulative=True
y establecemos density=True
para obtener un histograma que representa los valores de probabilidad que suman 1.
Grafica el CDF
para la distribución continua usando Matplotlib en 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()
Producción:
Traza el PMF
y el CDF
para la distribución continua dada. Para calcular los valores y de CDF
, usamos el método numpy.cumsum()
para calcular la suma acumulativa de un array.
Dividimos y
por la suma del array y
multiplicada por el dx
para normalizar los valores de modo que los valores CDF
vayan de 0 a 1.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn