文章目录
初步介绍
在学习Gamma分布之前,有必要复习一下Poisson分布:泊松分布
Poisson分布指的是,单个事件在某一刻发生的概率。Gamma分布更进一步,指的是某个事件在某个时刻发生第
次的概率。
其中,
为形状参数,
为尺度参数,固定尺度参数
,给定不同的
值,可得到不同型形状的
分布的概率曲线
import numpy as np
import matplotlib.pyplot as plt
from numpy.random import gamma
for k in [0.8, 1.5, 3.5]:
xs = gamma(k, size=20000)
plt.hist(xs, 200, range=(0,10),
alpha=0.5, label=f"k={k}")
plt.legend()
plt.show()
其分布如下图所示
形状特征
一般来说,当
时,
为单调递减函数,对应图中
时,概率密度逐渐下降的情况;当
时,
先上凸,然后下凸,由于上图画的是随机点的直方图,所以对凹凸性的展现并不明显。当
时,
在增函数区间,是先下凸然后上凸的。
特别地,当
时,
分布的概率密度变为
此为指数分布,有关指数分布,请看这里Pyhton威布尔分布
令
,
,则其表达式变为
此即具有
个自由度的卡方分布,有关卡方分布请戳这里:Python卡方分布
尺度因子
可以调整分布曲线的胖瘦,需要注意的是,在
gamma
函数中,输入的尺度因子是
的倒数。接下来对
这三种情况进行仿真
ks = [0.8, 1.5, 3.5]
fig = plt.figure()
for i in range(3):
ax = fig.add_subplot(1,3,i+1)
ax.set_title(f"k={ks[i]}")
for lam in [1/2, 1, 2]:
xs = gamma(ks[i], lam, size=20000)
ax.hist(xs, 200, range=(0,10),
alpha=0.5, label=f"lambda={1/lam}")
plt.legend()
plt.show()
得到不同k值时的分布情况
可见,
越小,则分布越矮胖。
最后,测试一下
函数的期望与方差,根据其概率密度函数,可以求得其期望和方差分别为
接下来对其进行测试
k, lam = 1.5, 2
xs = gamma(k, 1/lam, size=20000)
print("理论期望", k/lam, "\t理论方差", k/lam**2)
print("实际期望", np.mean(xs), "\t实际方差", np.cov(xs))
得到输出
理论期望 0.75 理论方差 0.375
实际期望 0.7550140115027265 实际方差 0.3794021804397493