常见分布
1.概念
cdf-累计分布函数
pdf-概率密度函数
Gamma函数
2.常见分布-离散型
0-1分布/伯努利分布
随机变量X只可能有0,1两个值,S={0,1},它的分布律是
\(或者\)
则称X服从以p为参数的(0-1)分布,或者两点分布
二项分布
\(n=1 就是0-1分布\)
\(或者表示为\)
多项式分布
\(某随机实验如果有k个可能结局A_1、A_2、…、A_k,分别将他们的出现次数记为随机变量X_1、X_2、…、X_k,它们的概率分布分别是p_1,p_2,…,p_k,那么在n次采样的总结果中,A_1出现n_1次、A_2出现n_2次、…、A_k出现n_k次的这种事件的出现概率P有下面公式:\)
用另一种形式写为:
泊松分布
\(概率密度函数\)
\(记为 X \sim \pi(\lambda)\)
\(累计概率分布函数,其实就是概率函数的累加。\)
点击查看代码
from scipy.stats import poisson
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
mu = 10
mean, var, skew, kurt = poisson.stats(mu, moments='mvsk')# Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’).
x = np.arange(poisson.ppf(0.01, mu),
poisson.ppf(0.99, mu))
print(x)
print(poisson.pmf(x, mu))
ax.plot(x, poisson.pmf(x, mu), 'bo', ms=8, label='poisson pmf')
ax.vlines(x, 0, poisson.pmf(x, mu), colors='b', lw=5, alpha=0.5)
# vline - Plot vertical lines at each x from ymin to ymax.
rv = poisson(mu)
ax.vlines(x, 0, rv.pmf(x), colors='k', linestyles='-', lw=1,
label='frozen pmf')
ax.legend(loc='best', frameon=False)
plt.show()
点击查看代码
# 生成泊松随机数
r = poisson.rvs(mu, size=1000)
3.常见连续型分布
均匀分布
\(记作 X\sim U(a,b)\)
点击查看代码
from scipy.stats import uniform
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
mean, var, skew, kurt = uniform.stats(moments='mvsk')
x = np.linspace(uniform.ppf(0.01),
uniform.ppf(0.99), 100)
ax.plot(x, uniform.pdf(x),
'r-', lw=5, alpha=0.6, label='uniform pdf')
rv = uniform()
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
r = uniform.rvs(size=1000)
ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
指数分布
\(若X的概率密度函数为\)
\(其中\lambda >0,就称X服从参数为\lambda的指数分布 (Exponential),记为 X \sim E(\lambda) 或者 X \sim Exp(\lambda)\)
\(指数分布的 分布函数为\)
指数分布性质
指数分布具有无记忆性
$对于t_0 >0,t >0 $
\(P(X > t_0+t | X>t_0) = \frac{P(X>t_0+t,X > t_0)}{P(X>t_0)}=\frac{P(X>t_0+t)}{P(X>t_0)} = \frac{1-F(t_0+t)}{1-F(t_0)}\)
\(=\frac{e^{-\lambda(t_0+t)}}{e^{-\lambda t_0}} = e ^{-\lambda t} = P(X>t)\)
点击查看代码
# 注意这里的参数计算方式 pdf = lambda * exp(-lambda * x),scale = 1 / lambda
from scipy.stats import expon
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
lamda = 10
scl = 1 / lamda
x = np.linspace(expon.ppf(0.01),
expon.ppf(0.99), 60)
ax.plot(x, expon.pdf(x, scale=scl),
'bo', lw=5, alpha=0.6, label='expon pdf')
点击查看代码
# 累计分布函数
from scipy.stats import expon
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
lamda = 2/13
scl = 1 / lamda
x = np.linspace(expon.ppf(0.01),
expon.ppf(0.99), 60)
ax.plot(x, expon.cdf(x, scale=scl),
'bo', lw=5, alpha=0.6, label='expon cdf')
正态分布
\(多维情况下\)
\(\Lambda=\Sigma^{-1}称为精度矩阵\)
\(\Lambda的共轭先验是一个Wishart分布,(\mu,\Lambda)的共轭先验是高斯-Wishart分布\)
点击查看代码
from scipy.stats import norm
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
fig, ax = plt.subplots(1, 1)
x = np.linspace(norm.ppf(0.01),
norm.ppf(0.99), 100)
ax.plot(x, norm.pdf(x),
'r-', lw=5, alpha=0.6, label='norm pdf')
# 面积图
x = np.linspace(norm.ppf(0.025),
norm.ppf(0.975), 100)
plt.stackplot(x, norm.pdf(x))
点击查看代码
# 累计分布函数
from scipy.stats import norm
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(1, 1)
# loc是均值
loc = 0
# scale是standard deviation 标准差
scale = 1
x = np.linspace(-4,
4, 100)
ax.plot(x, norm.cdf(x, loc, scale),
'r-', lw=5, alpha=0.6, label='norm pdf')
学生t分布
\(\upsilon =1称为柯西分布\)
\(对于一个D维变量x,学生t分布是将多元高斯的精度矩阵(方差的倒数)关于共轭Wishart先验积分的结果\)
\(\upsilon\to \infty的情况下,t分布趋近于均值\mu,精度\Lambda的正态分布\)
点击查看代码
from scipy.stats import t
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
df = 2.74
mean, var, skew, kurt = t.stats(df, moments='mvsk')
x = np.linspace(t.ppf(0.01, df),
t.ppf(0.99, df), 100)
ax.plot(x, t.pdf(x, df),
'r-', lw=5, alpha=0.6, label='t pdf')
rv = t(df)
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
r = t.rvs(df, size=1000)
ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
Beta分布
\(这是连续变量x\in [0,1]的分布,经常用于表示某些二元事件的概率,有两个参数a,b,一般要求a>0,b>0\)
\(Beta分布是伯努利分布的共轭先验,其中a,b分布表示为x=1,x=0的观测的有效先验数量\)
\(a=b=1,简化为均匀分布\)
\(Beta分布是K状态狄利克雷分布K=2的特殊情形\)
点击查看代码
from scipy.stats import beta
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1)
a, b = 2.31, 0.627
mean, var, skew, kurt = beta.stats(a, b, moments='mvsk')
x = np.linspace(beta.ppf(0.01, a, b),
beta.ppf(0.99, a, b), 100)
ax.plot(x, beta.pdf(x, a, b),
'r-', lw=5, alpha=0.6, label='beta pdf')
rv = beta(a, b)
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
r = beta.rvs(a, b, size=1000)
ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
狄利克雷分布
\(狄利克雷分布是K个随机变量0\le \mu_k\le 1的多变量分布,其中k=1,2,...,K,并且满足下面的限制\)
\(记\mu =(\mu_1,...,\mu_K)^T,\alpha = (\alpha_1,...,\alpha_K)^T,有\)
\(其中\)
\(有\)
\(其中\)
\(狄利克雷分布是多项式分布关于参数\mu_k的共轭先验\)
Gamma分布
\(Gamma分布是正随机变量\tau>0的概率分布,参数a,b,满足限制a>0,b>0\)
\(Gamma分布是单变量高斯分布关于精度(方差的导数)的共轭先验\)
\(a=1,Gamma分布变成指数分布\)
Wishart分布
\(Whishart分布是多元高斯的精度矩阵的共轭先验,W是一个D\times D的对称正定矩阵,\upsilon被称为分布的自由度的数量,满足限制\upsilon > D-1\)
\(其中\)
\(一维情况下,Wishart分布就变成了Gamma分布,参数为a=\frac{\upsilon}{2},b=\frac{1}{2W}\)
拉普拉斯分布
\(线性回归的L1正则模型等价于贝叶斯回归的拉普拉斯分布先验的模块\)
4.混合分布
高斯-Gamma分布
\(这是一元高斯分布\mathcal{N}(x|\mu,\lambda^{-1}),均值\mu,精度\lambda均未知\)
高斯-Wishart分布
\(这是多元高斯分布\mathcal{N}(x|\mu,\Lambda)的共轭先验,其中均值\mu和精度\Lambda均未知\)
5.表格整理
一维
名称 | 分布函数 | 均值 | 方差 | 共轭先验 |
---|---|---|---|---|
伯努利分布 | \(Bern(x|\mu)=\mu^x(1-\mu)^{1-x}\) | \(\mathbb{E}[x]=\mu\) | \(var[x]=\mu(1-\mu)\) | \(对\mu的先验是beta分布\) |
二项分布 | \(Bin(m|N,\mu)=\begin{pmatrix}N\\ m\end{pmatrix}\mu^k(1-\mu)^{N-m}\) | \(\mathbb{E}[m]=N\mu\) | \(var[m]=N\mu(1-\mu)\) | \(对\mu的先验是beta分布\) |
Beta分布 | \(Beta(x|a,b)=\frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)}x^{a-1}(1-x)^{b-1}\) | \(\mathbb{E}[\mu]=\frac{a}{a+b}\) | \(var[x]=\frac{ab}{(a+b)^2(a+b+1)}\) | |
一元高斯分布 | \(\mathcal{N}(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\) | \(\mu\) | \(\sigma^2\) | \(对\mu的先验是高斯分布\\对精度\tau=\frac{1}{\sigma^2}的共轭先验是Gamma分布\\对\mu,\sigma^2的共轭先验是高斯-Gamma分布\) |
Gamma分布 | \(Gam(\tau|a,b)=\frac{1}{\Gamma(a)}b^a\tau^{a-1}e^{-b\tau}\) | \(\mathbb{E}[\tau]=\frac{a}{b}\\ \mathbb{E}[ln \tau]=\phi(a)-\ln(b)\) | \(var[\tau]=\frac{a}{b^2}\) | |
拉普拉斯分布 | \(f(x|\mu,\lambda)=\frac{1}{\lambda}exp(-\frac{|x-\mu|}{\lambda})\) | \(\mathbb{E}[x]=\mu\) | \(var[x]=2\lambda^2\) |
多维
名称 | 分布函数 | 均值 | 方差 | 共轭先验 |
---|---|---|---|---|
多项式分布 | \(对\mu的共轭先验是狄利克雷分布\) | |||
狄利克雷分布 | \(Dir(\mu|\alpha)=C(\alpha)\prod\limits_{k=1}^{K}\mu_k^{\alpha_k-1}\) | \(\mathbb{E}[\mu_k]=\frac{\alpha_k}{\hat \alpha}\\ \mathbb{E}[\ln \mu_k]=\phi(\alpha_k)-\phi(\hat \alpha)\) | \(var[\mu_k]=\frac{\alpha_k(\hat \alpha-\alpha_k)}{\hat \alpha^2(\hat \alpha +1)}\\ cov[\mu_j\mu_k]=-\frac{\alpha_j\alpha_k}{\hat \alpha^2(\hat \alpha+1)}\) | |
多元高斯分布 | \(\mathcal{N}(x|\mu,\Sigma)=\frac{1}{(2\pi)^{\frac{D}{2}}}\frac{1}{(|\Sigma|)^{\frac{1}{2}}} \exp\{-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\}\) | \(\mathbb{E}[x]=\mu\) | \(cov[x]=\Sigma\) | \(\mu的先验是多元高斯\\ \Lambda=\Sigma^{-1}的先验是Wishart分布\\(\mu,\Lambda)的先验是高斯-Wishart分布\) |
t分布 | \(St(x|\mu,\lambda,\upsilon)=\frac{\Gamma(\frac{\upsilon}{2}+\frac{1}{2})}{\Gamma(\frac{\upsilon}{2})}(\frac{\lambda}{\pi \upsilon})^{\frac{1}{2}}[1+\frac{\lambda(x-\upsilon)^2}{v}]^{-\frac{\upsilon}{2}-\frac{1}{2}}\) | \(\mathbb{E}[x]=\upsilon \\当\upsilon > 1时成立\) | \(var[x]=\frac{1}{\lambda}\frac{\upsilon}{\upsilon-2}\\当\upsilon>2时成立\) |
混合
名称 | 分布函数 |
---|---|
高斯-Gamma分布 | \(p(\mu,\lambda|\mu_0,\beta,a,b)=\mathcal{N}(\mu|\mu_0,(\beta\lambda)^{-1})Gam(\lambda|a,b),\lambda是精度=\frac{1}{\sigma^2}\) |
高斯-Wishart分布 | \(p(\mu,\Lambda|\mu_0,\beta,W,\upsilon)=\mathcal{N}(\mu|\mu_0,(\beta\Lambda)^{-1})\mathcal{W}(\Lambda|W,\upsilon)\) |