泊松分布与指数分布以及一道贝叶斯推断例题

泊松分布与指数分布

泊松分布是一个离散型分布,其概率质量函数写作:
P(Z=k)=λke−λk!,k=0,1,2,...P(Z=k)=\frac{\lambda^k e^{-\lambda}}{k!}, k=0,1,2,...P(Z=k)=k!λke−λ,k=0,1,2,...

其中,λ>0\lambda>0λ>0为参数,kkk为非负整数

如果Z∼Poi(λ)Z \sim Poi(\lambda)Z∼Poi(λ),则有EZ∣λ=λ,VarZ∣λ=λEZ\|\\lambda = \lambda, VarZ\|\\lambda = \lambdaEZ∣λ=λ,VarZ∣λ

指数分布是一个连续型分布,其概率密度函数写作:
fZ(z∣λ)=λe−λz,z≥0f_Z(z|\lambda) = \lambda e^{-\lambda z}, z\geq 0fZ(z∣λ)=λe−λz,z≥0

其中,λ>0\lambda>0λ>0为参数

其累积分布函数写作:
FZ(z∣λ)=∫0∞λe−λzdz=1−e−λzF_Z(z|\lambda) = \int_0^\infty \lambda e^{-\lambda z}dz = 1-e^{-\lambda z}FZ(z∣λ)=∫0∞λe−λzdz=1−e−λz

如果Z∼Exp(λ)Z \sim Exp(\lambda)Z∼Exp(λ),则有EZ∣λ=1/λ,VarZ∣λ=1/λ2EZ\|\\lambda = 1/\lambda, VarZ\|\\lambda = 1/\lambda^2EZ∣λ=1/λ,VarZ∣λ=1/λ2

λ\lambdaλ是否固定可以区分频率派与贝叶斯派,后者认为分布的参数是随机变量。

泊松分布与指数分布的关系

泊松分布描述单位时间内事件发生的次数,指数分布描述事件发生的时间间隔

令单位时间内事件发生的次数为λ\lambdaλ,时间ttt内共发生λt\lambda tλt次

时间ttt内的泊松分布如下:
P(Z=k)=(λt)ke−λtk!P(Z=k)=\frac{(\lambda t)^k e^{-\lambda t}}{k!}P(Z=k)=k!(λt)ke−λt
P(Z=0)=e−λtP(Z=0)= e^{-\lambda t}P(Z=0)=e−λt

时间ttt内无事发生 等价于 第一次事件发生的时间T>tT>tT>t,因此有:
P(T>t)=P(x=0)=e−λtP(T>t) = P(x=0) = e^{-\lambda t}P(T>t)=P(x=0)=e−λt

时间ttt内至少有一件事发生的概率可写作:
P(T≤t)=1−P(T>t)=1−e−λtP(T\leq t) = 1- P(T>t) = 1 - e^{-\lambda t}P(T≤t)=1−P(T>t)=1−e−λt

这就是指数分布的累计函数FT(t)F_T(t)FT(t)

The Poisson and Exponential Distribution, Jhon.C.B.Cooper. https://neurophysics.ucsd.edu/courses/physics_171/exponential.pdf

例题

例题来源于贝叶斯方法 概率编程与贝叶斯推断[M]

数据与代码可以在链接中找到https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter1_Introduction/Ch1_Introduction_PyMC_current.ipynb

现在有某用户70天的短信接收量数据,对其建模并根据数据估计参数的分布?

注:我只是直观感受一下贝叶斯方法如何解决问题,先不作考虑为什么λ\lambdaλ服从指数分布以及为什么设计两个λ\lambdaλ但又令α\alphaα等于短信数的均值分之一。

建模:

1、每天接收的短信数CiC_iCi服从泊松分布,即Ci∼Poi(λ)C_i \sim Poi(\lambda)Ci∼Poi(λ)

2、λ\lambdaλ是一个分段函数,λ=λ1,t<τ;λ2,t≥τ\lambda = \lambda_1, t<\tau; \lambda_2, t\geq \tauλ=λ1,t<τ;λ2,t≥τ

3、λ∼Exp(α)\lambda \sim Exp(\alpha)λ∼Exp(α),令α=1/ΣiCi70\alpha = 1/\Sigma_i \frac{C_i}{70}α=1/Σi70Ci

4、τ∼DiscreteUniform(1,70)\tau \sim DiscreteUniform(1,70)τ∼DiscreteUniform(1,70)

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
import pymc as pm


if __name__ == '__main__':
    # 加载数据
    count_data = np.loadtxt("data.csv")
    alpha = 1/count_data.mean()

    # 先验
    with pm.Model() as model:
        lambda_1 = pm.Exponential("lambda_1", alpha)
        lambda_2 = pm.Exponential("lambda_2", alpha)
        tau = pm.DiscreteUniform("tau", lower=0, upper=len(count_data)-1)
    with model: #model没有被销毁
        idx = np.arange(len(count_data))
        lambda_ = pm.math.switch(tau > idx, lambda_1, lambda_2)

    # 似然
    with model:
        observation = pm.Poisson("obs", lambda_, observed=count_data)

    # 后验
    with model:
        step = pm.Metropolis()
        trace = pm.sample(10000, tune=5000, step=step, return_inferencedata=False)

    # 获取先验
    with model:
        prior = pm.sample_prior_predictive(samples=10000)
    lambda_1_prior_samples = prior.prior["lambda_1"].values.flatten()
    lambda_2_prior_samples = prior.prior["lambda_2"].values.flatten()
    tau_prior_samples = prior.prior["tau"].values.flatten()
    # 绘图显示
    plt.subplot(3, 1, 1)
    plt.hist(lambda_1_prior_samples, bins=30)
    plt.subplot(3, 1, 2)
    plt.hist(lambda_2_prior_samples, bins=30)
    plt.subplot(3, 1, 3)
    plt.hist(tau_prior_samples, bins=30)
    plt.show()

    # 获取后验
    lambda_1_samples = trace['lambda_1']
    lambda_2_samples = trace['lambda_2']
    tau_samples = trace['tau']
    # 绘图显示
    plt.subplot(3, 1, 1)
    plt.hist(lambda_1_samples, bins=30)
    plt.subplot(3, 1, 2)
    plt.hist(lambda_2_samples, bins=30)
    plt.subplot(3, 1, 3)
    plt.hist(tau_samples, bins=30)
    plt.show()
相关推荐
云和数据.ChenGuang5 天前
metrics的解释 人工智能
人工智能·深度学习·学习·机器学习·概率论
AI科技星6 天前
数术工坊 · 第四卷 橡皮泥江湖(拓扑学)【完整定稿】
c语言·开发语言·汇编·electron·概率论·拓扑学
AI科技星6 天前
第六卷:量天尺传奇(几何学)
网络·人工智能·算法·概率论·学习方法·几何学·拓扑学
AI科技星7 天前
数术江湖·全卷合集 - 硬核江湖・数理史诗
android·人工智能·架构·概率论·学习方法
AI科技星8 天前
第三卷:质数王朝志(全卷定稿)
c语言·开发语言·汇编·electron·概率论
AI科技星8 天前
第四卷:橡皮泥江湖(拓扑学)――诸同奥义,九同立境贯拓扑
网络·人工智能·线性代数·架构·概率论·学习方法·拓扑学
AI科技星8 天前
第三卷:质数王朝志 第四章:RSA护国玄阵,质数锁天地,一数镇万法
android·人工智能·架构·概率论·学习方法
AI科技星9 天前
《全域数学/数术工坊》体系总览
c语言·开发语言·汇编·electron·概率论
lhjcsubupt9 天前
第二十二篇 从随机过程到IMU噪声模型
算法·机器学习·概率论
做cv的小昊10 天前
计算机图形学:【Games101】学习笔记08——光线追踪(辐射度量学、渲染方程与全局光照、蒙特卡洛积分与路径追踪)
图像处理·笔记·学习·计算机视觉·游戏引擎·图形渲染·概率论