Skellam 分布:两个泊松随机变量之差

文章目录

    • [1. 引言](#1. 引言)
    • [2. Skellam 分布的定义](#2. Skellam 分布的定义)
    • [3. Skellam 分布的概率质量函数](#3. Skellam 分布的概率质量函数)
    • [4. 概率质量函数的推导](#4. 概率质量函数的推导)
      • [4.1 泊松分布的概率质量函数](#4.1 泊松分布的概率质量函数)
      • [4.2 推导差值的概率](#4.2 推导差值的概率)
    • [5. Skellam 分布的统计性质](#5. Skellam 分布的统计性质)
      • [5.1 期望](#5.1 期望)
      • [5.2 方差](#5.2 方差)
      • [5.3 矩母函数](#5.3 矩母函数)
      • [5.4 对称性](#5.4 对称性)
    • [6. Python 实现与可视化](#6. Python 实现与可视化)
      • [6.1 绘制 Skellam 分布的概率质量函数](#6.1 绘制 Skellam 分布的概率质量函数)
      • [6.2 比较不同参数下的 Skellam 分布](#6.2 比较不同参数下的 Skellam 分布)
    • [7. Skellam 分布与正态分布的关系](#7. Skellam 分布与正态分布的关系)
    • [8. Skellam 分布在库存管理中的应用](#8. Skellam 分布在库存管理中的应用)
    • [9. 总结](#9. 总结)

1. 引言

泊松分布(Poisson Distribution)是概率论与统计学中一种重要的离散概率分布,广泛应用于排队论、库存管理、可靠性分析、交通流量预测等领域。

我们知道,两个相互独立的泊松随机变量之和仍然服从泊松分布。

假设:

X ∼ Poisson ⁡ ( λ 1 ) X\sim \operatorname{Poisson}(\lambda_1) X∼Poisson(λ1)

Y ∼ Poisson ⁡ ( λ 2 ) Y\sim \operatorname{Poisson}(\lambda_2) Y∼Poisson(λ2)

其中, X X X 和 Y Y Y 相互独立,则:

X + Y ∼ Poisson ⁡ ( λ 1 + λ 2 ) X+Y\sim \operatorname{Poisson}(\lambda_1+\lambda_2) X+Y∼Poisson(λ1+λ2)

那么,一个自然的问题是:

两个相互独立的泊松随机变量之差服从什么分布?

答案是:Skellam 分布(Skellam Distribution),也称为泊松差分布(Poisson Difference Distribution)。

本文将介绍 Skellam 分布的定义、数学性质、概率质量函数的推导,并通过 Python 实现概率计算和可视化。

2. Skellam 分布的定义

假设两个相互独立的泊松随机变量:

X ∼ Poisson ⁡ ( λ 1 ) X\sim \operatorname{Poisson}(\lambda_1) X∼Poisson(λ1)

Y ∼ Poisson ⁡ ( λ 2 ) Y\sim \operatorname{Poisson}(\lambda_2) Y∼Poisson(λ2)

定义新的随机变量:

Z = X − Y Z=X-Y Z=X−Y

则:

Z ∼ Skellam ⁡ ( λ 1 , λ 2 ) \boxed{Z\sim \operatorname{Skellam}(\lambda_1,\lambda_2)} Z∼Skellam(λ1,λ2)

其中:

  • λ 1 > 0 \lambda_1>0 λ1>0:第一个泊松随机变量的均值;
  • λ 2 > 0 \lambda_2>0 λ2>0:第二个泊松随机变量的均值;
  • X X X 和 Y Y Y 相互独立。

需要注意的是,泊松随机变量只能取非负整数,而两个泊松随机变量的差可以取任意整数。

因此,Skellam 分布的取值范围为:

Z ∈ { ... , − 2 , − 1 , 0 , 1 , 2 , ... } Z\in\{\ldots,-2,-1,0,1,2,\ldots\} Z∈{...,−2,−1,0,1,2,...}

例如,假设某仓库每天的入库数量和出库数量分别服从泊松分布,那么每日净库存变化量(入库量减去出库量)就可以用 Skellam 分布建模,前提是入库量与出库量相互独立。

3. Skellam 分布的概率质量函数

Skellam 分布的概率质量函数(Probability Mass Function, PMF)为:

P ( Z = k ) = e − ( λ 1 + λ 2 ) ( λ 1 λ 2 ) k / 2 I ∣ k ∣ ( 2 λ 1 λ 2 ) \boxed{ P(Z=k)= e^{-(\lambda_1+\lambda_2)} \left(\frac{\lambda_1}{\lambda_2}\right)^{k/2} I_{|k|}(2\sqrt{\lambda_1\lambda_2}) } P(Z=k)=e−(λ1+λ2)(λ2λ1)k/2I∣k∣(2λ1λ2 )

其中:

  • k ∈ Z k\in\mathbb Z k∈Z;
  • λ 1 , λ 2 > 0 \lambda_1,\lambda_2>0 λ1,λ2>0;
  • I ∣ k ∣ ( ⋅ ) I_{|k|}(\cdot) I∣k∣(⋅) 表示第一类修正贝塞尔函数(Modified Bessel Function of the First Kind)。

第一类修正贝塞尔函数可以表示为:

I n ( x ) = ∑ j = 0 ∞ 1 j ! ( j + n ) ! ( x 2 ) 2 j + n I_n(x)= \sum_{j=0}^{\infty} \frac{1}{j!(j+n)!} \left(\frac{x}{2}\right)^{2j+n} In(x)=j=0∑∞j!(j+n)!1(2x)2j+n

其中 n n n 为非负整数。

虽然 Skellam 分布的概率质量函数看起来比较复杂,但可以直接利用 Python 的 SciPy 库进行计算,无须手动计算贝塞尔函数。

4. 概率质量函数的推导

下面从两个独立泊松随机变量的概率质量函数出发,推导 Skellam 分布。

4.1 泊松分布的概率质量函数

由于:

X ∼ Poisson ⁡ ( λ 1 ) X\sim\operatorname{Poisson}(\lambda_1) X∼Poisson(λ1)

因此:

P ( X = x ) = e − λ 1 λ 1 x x ! P(X=x)=e^{-\lambda_1}\frac{\lambda_1^x}{x!} P(X=x)=e−λ1x!λ1x

类似地:

P ( Y = y ) = e − λ 2 λ 2 y y ! P(Y=y)=e^{-\lambda_2}\frac{\lambda_2^y}{y!} P(Y=y)=e−λ2y!λ2y

其中 x , y = 0 , 1 , 2 , ... x,y=0,1,2,\ldots x,y=0,1,2,...。

4.2 推导差值的概率

定义:

Z = X − Y Z=X-Y Z=X−Y

首先考虑 k ≥ 0 k\geq 0 k≥0 的情况。

事件 Z = k Z=k Z=k 等价于:

X = Y + k X=Y+k X=Y+k

因此:

P ( Z = k ) = ∑ j = 0 ∞ P ( X = j + k , Y = j ) P(Z=k) =\sum_{j=0}^{\infty}P(X=j+k,Y=j) P(Z=k)=j=0∑∞P(X=j+k,Y=j)

由于 X X X 和 Y Y Y 相互独立:

P ( Z = k ) = ∑ j = 0 ∞ P ( X = j + k ) P ( Y = j ) P(Z=k) =\sum_{j=0}^{\infty}P(X=j+k)P(Y=j) P(Z=k)=j=0∑∞P(X=j+k)P(Y=j)

将泊松分布的概率质量函数代入:

P ( Z = k ) = ∑ j = 0 ∞ e − λ 1 λ 1 j + k ( j + k ) ! e − λ 2 λ 2 j j ! P(Z=k)= \sum_{j=0}^{\infty} e^{-\lambda_1} \frac{\lambda_1^{j+k}}{(j+k)!} e^{-\lambda_2} \frac{\lambda_2^j}{j!} P(Z=k)=j=0∑∞e−λ1(j+k)!λ1j+ke−λ2j!λ2j

整理得:

P ( Z = k ) = e − ( λ 1 + λ 2 ) ∑ j = 0 ∞ λ 1 j + k λ 2 j ( j + k ) ! j ! P(Z=k) =e^{-(\lambda_1+\lambda_2)} \sum_{j=0}^{\infty} \frac{\lambda_1^{j+k}\lambda_2^j} {(j+k)!j!} P(Z=k)=e−(λ1+λ2)j=0∑∞(j+k)!j!λ1j+kλ2j

进一步整理:

P ( Z = k ) = e − ( λ 1 + λ 2 ) ( λ 1 λ 2 ) k / 2 ∑ j = 0 ∞ ( λ 1 λ 2 ) 2 j + k j ! ( j + k ) ! P(Z=k) =e^{-(\lambda_1+\lambda_2)} \left(\frac{\lambda_1}{\lambda_2}\right)^{k/2} \sum_{j=0}^{\infty} \frac{(\sqrt{\lambda_1\lambda_2})^{2j+k}} {j!(j+k)!} P(Z=k)=e−(λ1+λ2)(λ2λ1)k/2j=0∑∞j!(j+k)!(λ1λ2 )2j+k

注意到第一类修正贝塞尔函数:

I k ( 2 λ 1 λ 2 ) = ∑ j = 0 ∞ ( λ 1 λ 2 ) 2 j + k j ! ( j + k ) ! I_k(2\sqrt{\lambda_1\lambda_2}) =\sum_{j=0}^{\infty} \frac{(\sqrt{\lambda_1\lambda_2})^{2j+k}} {j!(j+k)!} Ik(2λ1λ2 )=j=0∑∞j!(j+k)!(λ1λ2 )2j+k

因此:

P ( Z = k ) = e − ( λ 1 + λ 2 ) ( λ 1 λ 2 ) k / 2 I k ( 2 λ 1 λ 2 ) P(Z=k) =e^{-(\lambda_1+\lambda_2)} \left(\frac{\lambda_1}{\lambda_2}\right)^{k/2} I_k(2\sqrt{\lambda_1\lambda_2}) P(Z=k)=e−(λ1+λ2)(λ2λ1)k/2Ik(2λ1λ2 )

对于 k < 0 k<0 k<0,可以交换 X X X 和 Y Y Y 的角色,采用类似的方法推导。

最终可以得到统一表达式:

P ( Z = k ) = e − ( λ 1 + λ 2 ) ( λ 1 λ 2 ) k / 2 I ∣ k ∣ ( 2 λ 1 λ 2 ) , k ∈ Z \boxed{ P(Z=k)= e^{-(\lambda_1+\lambda_2)} \left(\frac{\lambda_1}{\lambda_2}\right)^{k/2} I_{|k|}(2\sqrt{\lambda_1\lambda_2}), \quad k\in\mathbb Z } P(Z=k)=e−(λ1+λ2)(λ2λ1)k/2I∣k∣(2λ1λ2 ),k∈Z

这就是 Skellam 分布的概率质量函数。

5. Skellam 分布的统计性质

5.1 期望

由于期望具有线性性质:

E Z = E X − Y = E X − E Y EZ=EX-Y=EX-EY EZ=EX−Y=EX−EY

而泊松分布的期望等于其参数:

E X = λ 1 , E Y = λ 2 EX=\lambda_1,\qquad EY=\lambda_2 EX=λ1,EY=λ2

因此:

E Z = λ 1 − λ 2 \boxed{EZ=\lambda_1-\lambda_2} EZ=λ1−λ2

5.2 方差

因为 X X X 和 Y Y Y 相互独立:

Var ⁡ ( X − Y ) = Var ⁡ ( X ) + Var ⁡ ( Y ) \operatorname{Var}(X-Y) =\operatorname{Var}(X)+\operatorname{Var}(Y) Var(X−Y)=Var(X)+Var(Y)

而泊松分布的方差也等于其参数:

Var ⁡ ( X ) = λ 1 \operatorname{Var}(X)=\lambda_1 Var(X)=λ1

Var ⁡ ( Y ) = λ 2 \operatorname{Var}(Y)=\lambda_2 Var(Y)=λ2

所以:

Var ⁡ ( Z ) = λ 1 + λ 2 \boxed{\operatorname{Var}(Z)=\lambda_1+\lambda_2} Var(Z)=λ1+λ2

这里有一个值得注意的性质:

两个独立泊松随机变量相减时,其期望相减,但方差相加。

这是因为:

Var ⁡ ( − Y ) = Var ⁡ ( Y ) \operatorname{Var}(-Y)=\operatorname{Var}(Y) Var(−Y)=Var(Y)

5.3 矩母函数

泊松分布的矩母函数(Moment Generating Function, MGF)为:

M X ( t ) = exp ⁡ ( λ 1 ( e t − 1 ) ) M_X(t)=\exp\left(\lambda_1(e^t-1)\right) MX(t)=exp(λ1(et−1))

M Y ( t ) = exp ⁡ ( λ 2 ( e t − 1 ) ) M_Y(t)=\exp\left(\lambda_2(e^t-1)\right) MY(t)=exp(λ2(et−1))

由 Z = X − Y Z=X-Y Z=X−Y,以及 X X X、 Y Y Y 的独立性:

M Z ( t ) = E e t ( X − Y ) M_Z(t)=Ee\^{t(X-Y)} MZ(t)=Eet(X−Y)

= M X ( t ) M Y ( − t ) =M_X(t)M_Y(-t) =MX(t)MY(−t)

因此:

M Z ( t ) = exp ⁡ λ 1 ( e t − 1 ) + λ 2 ( e − t − 1 ) \boxed{ M_Z(t)= \exp\left \\lambda_1(e\^t-1) + \\lambda_2(e\^{-t}-1) \\right } MZ(t)=expλ1(et−1)+λ2(e−t−1)

进一步可以利用矩母函数推导 Skellam 分布的期望、方差及更高阶矩。

5.4 对称性

当两个泊松分布具有相同参数:

λ 1 = λ 2 = λ \lambda_1=\lambda_2=\lambda λ1=λ2=λ

Skellam 分布关于零点对称:

P ( Z = k ) = P ( Z = − k ) P(Z=k)=P(Z=-k) P(Z=k)=P(Z=−k)

此时:

E Z = 0 EZ=0 EZ=0

Var ⁡ ( Z ) = 2 λ \operatorname{Var}(Z)=2\lambda Var(Z)=2λ

当 λ 1 ≠ λ 2 \lambda_1\neq\lambda_2 λ1=λ2 时,分布通常不再关于零点对称。

6. Python 实现与可视化

Python 中的 scipy.stats.skellam 可以直接计算 Skellam 分布的概率质量函数、累积分布函数以及相关统计量。

6.1 绘制 Skellam 分布的概率质量函数

假设:

X ∼ Poisson ⁡ ( 15 ) X\sim\operatorname{Poisson}(15) X∼Poisson(15)

Y ∼ Poisson ⁡ ( 10 ) Y\sim\operatorname{Poisson}(10) Y∼Poisson(10)

那么:

Z = X − Y ∼ Skellam ⁡ ( 15 , 10 ) Z=X-Y\sim\operatorname{Skellam}(15,10) Z=X−Y∼Skellam(15,10)

对应的期望和方差分别为:

E Z = 15 − 10 = 5 EZ=15-10=5 EZ=15−10=5

Var ⁡ ( Z ) = 15 + 10 = 25 \operatorname{Var}(Z)=15+10=25 Var(Z)=15+10=25

使用以下 Python 代码绘制概率质量函数。

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import skellam

# Parameters
lambda1 = 15
lambda2 = 10

# Possible values of Z
x = np.arange(-20, 31)

# Probability mass function
pmf = skellam.pmf(x, lambda1, lambda2)

# Plot PMF
plt.figure(figsize=(10, 5))
plt.bar(x, pmf, alpha=0.8)

plt.axvline(
    lambda1 - lambda2,
    color="red",
    linestyle="--",
    label="Mean"
)

plt.xlabel("Z = X - Y")
plt.ylabel("Probability")
plt.title("Skellam Distribution")
plt.legend()
plt.grid(alpha=0.3)

plt.show()

从概率分布图可以观察到:

  1. Skellam 分布允许随机变量取负值;
  2. 分布中心大致位于 λ 1 − λ 2 = 5 \lambda_1-\lambda_2=5 λ1−λ2=5;
  3. 分布的离散程度由 λ 1 + λ 2 \lambda_1+\lambda_2 λ1+λ2 决定;
  4. 当两个泊松分布的参数相同时,Skellam 分布关于零点对称。

6.2 比较不同参数下的 Skellam 分布

下面比较三组不同参数下的分布形状。

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import skellam

x = np.arange(-30, 31)

parameters = [
    (10, 10),
    (15, 10),
    (20, 10)
]

plt.figure(figsize=(10, 5))

for lambda1, lambda2 in parameters:
    pmf = skellam.pmf(x, lambda1, lambda2)

    plt.plot(
        x,
        pmf,
        marker="o",
        markersize=3,
        label=f"Skellam({lambda1}, {lambda2})"
    )

plt.xlabel("Z")
plt.ylabel("Probability")
plt.title("Comparison of Skellam Distributions")
plt.legend()
plt.grid(alpha=0.3)

plt.show()

通过比较可以发现:

  • 当 λ 1 = λ 2 \lambda_1=\lambda_2 λ1=λ2 时,分布关于零点对称;
  • 当 λ 1 > λ 2 \lambda_1>\lambda_2 λ1>λ2 时,分布中心向正方向移动;
  • 当 λ 1 < λ 2 \lambda_1<\lambda_2 λ1<λ2 时,分布中心向负方向移动;
  • 当 λ 1 + λ 2 \lambda_1+\lambda_2 λ1+λ2 增加时,分布方差增大。

7. Skellam 分布与正态分布的关系

当 λ 1 \lambda_1 λ1 和 λ 2 \lambda_2 λ2 都比较大时,可以使用正态分布近似两个独立泊松随机变量:

X ≈ N ( λ 1 , λ 1 ) X\approx N(\lambda_1,\lambda_1) X≈N(λ1,λ1)

Y ≈ N ( λ 2 , λ 2 ) Y\approx N(\lambda_2,\lambda_2) Y≈N(λ2,λ2)

由于两个独立正态随机变量之差仍然服从正态分布,因此:

Z ≈ N ( λ 1 − λ 2 , λ 1 + λ 2 ) \boxed{ Z\approx N(\lambda_1-\lambda_2,\lambda_1+\lambda_2) } Z≈N(λ1−λ2,λ1+λ2)

例如:

X ∼ Poisson ⁡ ( 100 ) X\sim\operatorname{Poisson}(100) X∼Poisson(100)

Y ∼ Poisson ⁡ ( 80 ) Y\sim\operatorname{Poisson}(80) Y∼Poisson(80)

则:

Z = X − Y ∼ Skellam ⁡ ( 100 , 80 ) Z=X-Y\sim\operatorname{Skellam}(100,80) Z=X−Y∼Skellam(100,80)

其正态近似为:

Z ≈ N ( 20 , 180 ) Z\approx N(20,180) Z≈N(20,180)

这里采用 N ( μ , σ 2 ) N(\mu,\sigma^2) N(μ,σ2) 的记法,即第二个参数表示方差。

需要注意,Skellam 分布是离散分布,而正态分布是连续分布。当使用正态分布近似累积概率时,可以采用连续性修正。

例如:

P ( Z ≤ k ) ≈ Φ ( k + 0.5 − ( λ 1 − λ 2 ) λ 1 + λ 2 ) P(Z\leq k) \approx \Phi\left( \frac{k+0.5-(\lambda_1-\lambda_2)} {\sqrt{\lambda_1+\lambda_2}} \right) P(Z≤k)≈Φ(λ1+λ2 k+0.5−(λ1−λ2))

其中 Φ ( ⋅ ) \Phi(\cdot) Φ(⋅) 为标准正态分布的累积分布函数。

这种近似在随机优化、库存控制及概率约束模型中具有一定的实用价值。

8. Skellam 分布在库存管理中的应用

考虑某仓库的库存系统。

假设在某个周期内:

  • 到货数量为 X X X;
  • 客户需求数量为 Y Y Y。

并且:

X ∼ Poisson ⁡ ( λ 1 ) X\sim\operatorname{Poisson}(\lambda_1) X∼Poisson(λ1)

Y ∼ Poisson ⁡ ( λ 2 ) Y\sim\operatorname{Poisson}(\lambda_2) Y∼Poisson(λ2)

假设到货数量与客户需求相互独立。

定义库存净变化量:

Z = X − Y Z=X-Y Z=X−Y

那么:

Z ∼ Skellam ⁡ ( λ 1 , λ 2 ) Z\sim\operatorname{Skellam}(\lambda_1,\lambda_2) Z∼Skellam(λ1,λ2)

若期初库存为 I 0 I_0 I0,允许库存状态取负值以表示欠交订单(Backorders),则周期末净库存为:

I 1 = I 0 + X − Y I_1=I_0+X-Y I1=I0+X−Y

因此:

I 1 = I 0 + Z I_1=I_0+Z I1=I0+Z

周期末出现缺货(即净库存为负)的概率为:

P ( I 1 < 0 ) = P ( Z < − I 0 ) P(I_1<0)=P(Z<-I_0) P(I1<0)=P(Z<−I0)

由于 Z Z Z 为整数随机变量,若 I 0 I_0 I0 为非负整数,则:

P ( I 1 < 0 ) = F Skellam ⁡ ( − I 0 − 1 ; λ 1 , λ 2 ) \boxed{ P(I_1<0) =F_{\operatorname{Skellam}}(-I_0-1;\lambda_1,\lambda_2) } P(I1<0)=FSkellam(−I0−1;λ1,λ2)

其中 F Skellam ⁡ F_{\operatorname{Skellam}} FSkellam 为 Skellam 分布的累积分布函数。

9. 总结

本文介绍了 Skellam 分布的定义、数学性质、概率质量函数推导、Python 实现及其在库存管理中的应用。

主要结论如下:

性质 数学表达式
定义 Z = X − Y Z=X-Y Z=X−Y
分布 Z ∼ Skellam ⁡ ( λ 1 , λ 2 ) Z\sim\operatorname{Skellam}(\lambda_1,\lambda_2) Z∼Skellam(λ1,λ2)
基本条件 X , Y X,Y X,Y 为相互独立的泊松随机变量
期望 E Z = λ 1 − λ 2 EZ=\lambda_1-\lambda_2 EZ=λ1−λ2
方差 Var ⁡ ( Z ) = λ 1 + λ 2 \operatorname{Var}(Z)=\lambda_1+\lambda_2 Var(Z)=λ1+λ2
取值范围 所有整数
对称条件 λ 1 = λ 2 \lambda_1=\lambda_2 λ1=λ2
正态近似 N ( λ 1 − λ 2 , λ 1 + λ 2 ) N(\lambda_1-\lambda_2,\lambda_1+\lambda_2) N(λ1−λ2,λ1+λ2)

最重要的结论是:

两个独立泊松随机变量之和服从泊松分布,而它们之差服从 Skellam 分布。

X + Y ∼ Poisson ⁡ ( λ 1 + λ 2 ) , X − Y ∼ Skellam ⁡ ( λ 1 , λ 2 ) . \boxed{ \begin{aligned} X+Y &\sim \operatorname{Poisson}(\lambda_1+\lambda_2),\\ X-Y &\sim \operatorname{Skellam}(\lambda_1,\lambda_2). \end{aligned} } X+YX−Y∼Poisson(λ1+λ2),∼Skellam(λ1,λ2).

相关推荐
啊阿狸不会拉杆8 个月前
《计算机视觉:模型、学习和推理》第 3 章-常用概率分布
人工智能·python·学习·机器学习·计算机视觉·正态分布·概率分布
七夜zippoe9 个月前
Python统计分析实战:从描述统计到假设检验的完整指南
开发语言·python·统计分析·置信区间·概率分布
点云SLAM9 个月前
似然函数(Likelihood Function)和最大似然估计
算法·机器学习·概率论·数理统计·最大似然估计·似然函数·概率分布
CS创新实验室10 个月前
概率分布基本概念的深入理解
统计·概率论·概率分布
大千AI助手1 年前
正态分布:机器学习中的统计基石与高斯遗产
人工智能·机器学习·概率论·高斯分布·正态分布·概率分布·大千ai助手
Lichenpar2 年前
AI小白的第七天:必要的数学知识(四)
人工智能·概率论·概率分布