若r.v. a a a只取常数值c,即 P { a = c } = 1 P\{a=c\}=1 P{a=c}=1,这时分布函数为:
I c ( x ) = { 0 a ⩽ c 1 x>c I_{c}(x)= \begin{cases} 0& \text{a $\leqslant$ c}\\ 1& \text{x>c} \end{cases} Ic(x)={01a ⩽ cx>c
把这种分布称为__退化分布__或者__单点分布__。
再一次实验中,事件A出现的概率为 p p p,不出现的概率为 q = 1 − p q=1-p q=1−p,若用 β \beta β记事件A出现的次数,则 β \beta β仅取值0或1,相应的概率分布为
b k = P { β = k } = p k q 1 − k , k = 0 , 1 b_{k}=P\{\beta=k\}=p^{k}q^{1-k}, k=0,1 bk=P{β=k}=pkq1−k,k=0,1
这个分布称为__伯努利分布__,也叫__两点分布__。
from IPython.core.pylabtools import figsize
import numpy as np
import scipy.stats as stats
from matplotlib import pyplot as plt
import warnings
warnings.filterwarnings("ignore")
%matplotlib inline
X = np.arange(0, 2,1)
p = 0.2
pList = stats.bernoulli.pmf(X, p)
plt.plot(X, pList, marker='o',linestyle='None')
plt.vlines(X, 0, pList)
plt.xlabel('$k$')
plt.ylabel('$P(X = k)$')
plt.title('$P=%.2f$' % p)
plt.show()
P ( X = k ) = ( N k ) p k ( 1 − p ) N − k P( X = k ) = {{N}\choose{k}} p^k(1-p)^{N-k} P(X=k)=(kN)pk(1−p)N−k
figsize(12.5, 4)
binomial = stats.binom
parameters = [(10, .4), (10, .9)]
for i in range(2):
N, p = parameters[i]
_x = np.arange(N + 1)
plt.bar(_x - 0.5, binomial.pmf(_x, N, p),alpha=0.6,
label="$N$: {}, $p$: {:.1f}" .format(N, p),
linewidth=3)
plt.legend(loc="upper left")
plt.xlim(0, 10.5)
plt.xlabel("$k$")
plt.ylabel("$P(X = k)$")
Text(0, 0.5, '$P(X = k)$')
对某批N 件产品进行不放回抽样检查,若这
批产品中有M件次品,现从整批产品中随机抽出
n件产品,则在
这n件产品中出现的次品数x是随机变量,它取值0,1, 2,…
n,其概率分布为超几何分布.
P ( X = k ) = C M k C N − M n − k C N n ( k = 0 , 1 , 2 , ⋯ m , m = min { M , m } , n ≤ N , M ≤ N ) \begin{aligned} {P{ \left( {X=k} \left) =\frac{{C\mathop{{}}\nolimits_{{M}}^{{k}}C\mathop{{}}\nolimits_{{N-M}}^{{n-k}}}}{{C\mathop{{}}\nolimits_{{N}}^{{n}}}}\right. \right. }}\\ { \left( {k=0,1,2, \cdots m,m=\text{m}\text{i}\text{n}{ \left\{ {M,m} \right\} },n \le N,M \le N} \right) } \end{aligned} P(X=k)=CNnCMkCN−Mn−k(k=0,1,2,⋯m,m=min{M,m},n≤N,M≤N)
# 超几何分布 hypergeometric(ngood, nbad, nsample, size=None) 好的总数、坏的总数、每次采样数、试验次数
s = np.random.hypergeometric(10,20,5,size=1000000)
p = sum(s>=4)/1000000.
fig = plt.figure(figsize=(8,6))
a1 = fig.add_subplot(2,2,1)
a1.hist(s ,bins=20,color='b',alpha=0.3)
plt.show()
若事件流具有平稳性、无后效性、普通性,则称该事件流为泊松事件流(泊松流)。
P ( Z = k ) = λ k e − λ k ! , k = 0 , 1 , 2 , … P(Z = k) =\frac{\lambda^k e^{-\lambda}}{k!}, \; \; k=0,1,2, \dots P(Z=k)=k!λke−λ,k=0,1,2,…
Poisson分布的重要性质是:它的期望值和方差值都等于它的参数
E [ Z ] = λ V a r [ Z ] = λ E\large[Z ] = \lambda \\ Var\large[Z ] = \lambda E[Z]=λVar[Z]=λ
figsize(12.5, 4)
lams = [1,5,10]
for i in lams:
plt.scatter(np.arange(20),stats.poisson.pmf(np.arange(20), mu=i),s=100,label='lam={}'.format(i))
plt.plot(np.arange(20),stats.poisson.pmf(np.arange(20), mu=i))
plt.legend()
在事件A发生的概率为p的伯努利试验中,若
以η记A首次出现时的试验次数,则η为随机变量,它可能取的
值为1,2,3,…其概率分布为几何分布:
p { η = k } = q k − 1 p , k = 1 , 2 , . . . p\{η=k\}=q^{k-1}p ,k=1,2,... p{η=k}=qk−1p,k=1,2,...
k = 5
p = 0.6
X = np.arange(1, k+1,1)
pList = stats.geom.pmf(X,p)
plt.vlines(X, 0, pList,colors='r')
plt.xlabel('$k$')
plt.ylabel('$p\{X=k\}$')
plt.title('p=%.2f' % p)
plt.show()
在伯努利试验中,若以ζ记第r次成
功出现时的试验次数,则ζ是随机变量,取值r,r+l, .其概率
分布为__帕斯卡分布__:
P { ζ = k } = C k − 1 r − 1 p r q k − r , k = r , r + 1 , . . . P\{ζ=k\}=C_{k-1}^{r-1}p^{r}q^{k-r},k=r,r+1,... P{ζ=k}=Ck−1r−1prqk−r,k=r,r+1,...
对巴斯卡分布,可以略加推广,即去掉r是正整数的限制,这
便得到__负二项分布__
对于任意实数r>0,称
N b ( l ; r , p ) = C − r l p r − q l , l = 0 , 1 , 2 , . . . Nb(l;r,p)=C_{-r}^{l}p^r{-q}^l,l=0,1,2,... Nb(l;r,p)=C−rlpr−ql,l=0,1,2,...
为负二项分布。
可证 C − a k = ( − 1 ) k C a + k − 1 k C_{-a}^{k}={(-1)}^kC_{a+k-1}^{k} C−ak=(−1)kCa+k−1k
fig, ax = plt.subplots(1, 1)
n, p = 0.4, 0.4
mean, var, skew, kurt = stats.nbinom.stats(n, p, moments='mvsk')
x = np.arange(stats.nbinom.ppf(0.01, n, p),
stats.nbinom.ppf(0.99, n, p))
ax.plot(x, stats.nbinom.pmf(x, n, p), 'bo', ms=8, label='nbinom pmf')
ax.vlines(x, 0, stats.nbinom.pmf(x, n, p), colors='b', lw=5, alpha=0.5)
rv = stats.nbinom(n, p)
ax.vlines(x, 0, rv.pmf(x), colors='k', linestyles='-', lw=1,
label='frozen pmf')
ax.legend(loc='best', frameon=False)
plt.show()
若a,b为有限数,由下列密度函数定义的分布
称为[a, b].上__均匀分布__:
P ( x ) = { 1 b − a a ⩽ x ⩽ b 0 xb P(x)= \begin{cases} \frac{1}{b-a}& \text{a $\leqslant x \leqslant$ b}\\ 0& \text{xb} \end{cases} P(x)={b−a10a ⩽x⩽ bx或x>b
plt.plot(np.linspace(-4,4,100),stats.uniform.pdf(np.linspace(-4,4,100)))
plt.fill_between(np.linspace(-4,4,100),stats.uniform.pdf(np.linspace(-4,4,100)),alpha=0.15)
plt.plot(np.linspace(-4,4,100),stats.uniform.cdf(np.linspace(-4,4,100)))
plt.text(x=-1.5,y=0.7,s="pdf(uniform)",rotation=65,alpha=0.75,weight="bold",color="b")
plt.text(x=-0.4,y=0.5,s="cdf",rotation=55,alpha=0.75,weight="bold",color="r")
Text(-0.4, 0.5, 'cdf')
一个正态分布用X~N(μ,1/τ)表示,它带有两个参数:均值μ和精准度τ。这里用1/τ代替了σ2,主要是因为这样能简化数据分析。记住:τ越小,分布越宽(即我们越不能确定);τ越大,分布越窄(即我们越能确定)。不管怎么样,τ永远为正数。
一个服从N(μ,1/τ)的随机变量的概率密度函数如下:
f ( x ∣ μ , τ ) = τ 2 π exp ( − τ 2 ( x − μ ) 2 ) f(x|\mu,\tau) = \sqrt{\frac{\tau}{2\pi}} \exp\left(-\frac{\tau}{2} (x-\mu)^2 \right) f(x∣μ,τ)=2πτexp(−2τ(x−μ)2)
E ( X ) = μ E(X) = \mu E(X)=μ
V a r ( X ) = 1 τ Var( X ) = \frac{1}{\tau} Var(X)=τ1
# 展示正态分布的不同密度函数
figsize(12.5, 4)
nor = stats.norm
x = np.linspace(-8, 7, 150)
mu = (-2, 0, 3)
tau = (.7, 1, 2.8)
parameters = zip(mu, tau)
for _mu, _tau in parameters:
plt.plot(x, nor.pdf(x, _mu, scale=1./_tau),
label="$\mu = {},\;\\tau = {:.1f}$".format(_mu, _tau))
plt.fill_between(x, nor.pdf(x, _mu, scale=1./_tau),alpha=.33)
plt.legend(loc="upper right")
f Z ( z ) = λ e − λ z , z ≥ 0 f_Z(z) = \lambda e^{-\lambda z},\;\; z\ge 0 fZ(z)=λe−λz,z≥0
指数可以取任意非负值,包括非整数
对指定的参数λ,指数型随机变量的期望值为λ的逆
E [ Z ] = 1 λ E[Z] = \frac{1}{\lambda} E[Z]=λ1
a = np.linspace(0, 4, 100)
expo = stats.expon
lambda_ = [0.2,0.5, 1]
for l in lambda_:
plt.plot(a, expo.pdf(a, scale=1./l), lw=3, label="$\lambda = {:.1f}$".format(l))
plt.fill_between(a, expo.pdf(a, scale=1./l),alpha=.33)
plt.legend()
plt.ylabel("PDF at $z$")
plt.xlabel("$z$")
plt.ylim(0,1.2)
(0.0, 1.2)
gamma = stats.gamma
fig, ax = plt.subplots(1, 1)
a = 1.99
mean, var, skew, kurt = gamma.stats(a, moments='mvsk')
x = np.linspace(gamma.ppf(0.01, a),
gamma.ppf(0.99, a), 100)
ax.plot(x, gamma.pdf(x, a),
'r-', lw=5, alpha=0.6, label='gamma pdf')
rv = gamma(a)
ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
r = gamma.rvs(a, size=1000)
ax.hist(r, density=True, histtype='stepfilled', alpha=0.2)
ax.legend(loc='best', frameon=False)
plt.show()
指数分布解决的问题是“要等到一个随机事件发生,需要经历多久时间”,伽玛分布解决的问题是“要等到n个随机事件都发生,需要经历多久时间”。所以,伽玛分布可以看作是n个指数分布的独立随机变量的加总。
Exp ( β ) ∼ Gamma ( 1 , β ) \text{Exp}(\beta) \sim \text{Gamma}(1, \beta) Exp(β)∼Gamma(1,β)
f ( x ∣ α , β ) = β α x α − 1 e − β x Γ ( α ) f(x \mid \alpha, \beta) = \frac{\beta^{\alpha}x^{\alpha-1}e^{-\beta x}}{\Gamma(\alpha)} f(x∣α,β)=Γ(α)βαxα−1e−βx
figsize(12.5, 5)
parameters = [(1, 0.5), (9, 2), (3, 0.5), (7, 0.5)]
x = np.linspace(0.001 ,20, 150)
for alpha, beta in parameters:
y = gamma.pdf(x, alpha, scale=1./beta)
lines = plt.plot(x, y, label = "({:.1f},{:.1f})".format(alpha,beta), lw = 3)
plt.fill_between(x, 0, y, alpha = 0.2, color = lines[0].get_color())
plt.autoscale(tight=True)
plt.legend(title=r"$\alpha, \beta$ - parameters")
Beta分布的密度函数为: f ( x ; α , β ) = 1 B ( α , β ) x α − 1 ( 1 − x ) β − 1 f(x;\alpha,\beta)=\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1} f(x;α,β)=B(α,β)1xα−1(1−x)β−1
figsize(12.5, 4)
datas = np.linspace(0, 1, 200)
plt.fill_between(datas,stats.beta.pdf(datas, a=5, b=10),hatch="+")
plt.fill_between(datas,stats.beta.pdf(datas, a=100, b=20),hatch="//")
plt.fill_between(datas,stats.beta.pdf(datas, a=20, b=60),hatch="*")