文章目录
-
- [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()

从概率分布图可以观察到:
- Skellam 分布允许随机变量取负值;
- 分布中心大致位于 λ 1 − λ 2 = 5 \lambda_1-\lambda_2=5 λ1−λ2=5;
- 分布的离散程度由 λ 1 + λ 2 \lambda_1+\lambda_2 λ1+λ2 决定;
- 当两个泊松分布的参数相同时,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).