几何分布是一种离散概率分布,它表示随机变量 (X) 的概率分布,该随机变量代表获得一次成功所需的伯努利试验次数。
概率质量函数 (pmf) 几何分布定义为:
其中,k 是伯努利试验的次数 (k = 1,2...),p 是每次试验成功的概率。
几何分布的平均值为 1/ p 和方差 (1-p)/p2。
在 k 处计算的累积分布函数 (cdf) ,是随机变量 (X) 取小于或等于 k 的值的概率。几何分布的cdf定义为:
NumPy random.geometric() 函数返回几何分布的随机样本。
语法
numpy.random.geometric(p, size=None)
参数
p | 必填。 指定每次试验的成功概率,必须在 [0, 1] 范围内。 float 或 array_like of floats。 |
size | 可选。 指定输出形状。 int 或 int 元组。如果给定形状为(m, n, k),则绘制m * n * k个样本。如果 size 为 None(默认),并且 n 和 p 均为标量,则返回单个值。否则,将抽取 np.broadcast(n, p).size 个样本。 |
返回值
从参数化几何分布返回样本。 ndarray 或标量。
示例:几何分布的值
在下面的示例中,random.geometric() 函数用于创建给定矩阵包含从指定几何分布中抽取的随机值的形状。
import numpy as np
size = (5,3)
sample = np.random.geometric(0.5, size)
print(sample)
上述代码的可能输出可能是:
[[2 2 4]
[2 2 1]
[1 1 1]
[1 1 2]
[5 2 1]]
绘制几何分布
示例:直方图
Matplotlib 是一个 Python 绘图库,可用于绘制几何分布的概率质量函数 (pmf)使用 hist() 函数。
import matplotlib.pyplot as plt
import numpy as np
#修复种子以提高重现性
#结果
np.random.seed(10)
size = 10000
#抽取10000个样本
#几何分布
sample = np.random.geometric(0.5, size)
bin = np.arange(0,20,1)
plt.hist(sample, bins=bin, edgecolor='blue')
plt.title("Geometric Distribution")
plt.show()
上述代码的输出将是:
示例:比较 cdf
可以使用 Seaborn ecdfplot() 函数以图形方式比较多个累积分布函数。 在下面的示例中,比较了三个几何分布(每个具有不同的成功概率)的 cdf。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#修复种子以提高重现性
#结果
np.random.seed(10)
size = 1000
#绘制1000个样本
#不同的几何分布
sns.ecdfplot(np.random.geometric(0.2, size))
sns.ecdfplot(np.random.geometric(0.5, size))
sns.ecdfplot(np.random.geometric(0.8, size))
plt.legend(["$p = 0.2$",
"$p = 0.5$",
"$p = 0.8$"])
plt.show()
上述代码的输出将是: