随机变量之和的概率分布:卷积定理的简单应用

本文链接个人站 | 简书 | CSDN
版权声明:除特别声明外,本博客文章均采用 BY-NC-SA 许可协议。转载请注明出处。

我们在《一个最大化条件概率问题》一文中提到,为了满足商品采购业务的需要,我们首先预测每一天的需求所服从的概率分布,然后计算若干天总需求所服从的概率分布。那么,如何将日需求的分布转化为总需求的分布呢?

方法

考虑一组独立的随机变量 X_1, X_2, \cdots, X_n,令
S_n=\sum_{i=1}^{n} X_i

S_n = S_{n-1} + X_n
也就是说,多个随机变量的和总可以还原回两个随机变量的和的情况。因此,我们只需要知道如何计算两个随机变量的和的分布就可以了。

假设 XY 是两个独立的随机变量,令 Z=X+Y

  • XY 是离散型随机变量,则 Z 的概率质量函数为 X 的概率质量函数与 Y 的概率质量函数的离散卷积:
    P(Z=z) = \sum_{k=-\infty}^{+\infty}P(X=k)\cdot P(Y=z-k)

  • XY 是连续型随机变量,则 Z 的概率密度函数为 X 的概率密度函数与 Y 的概率密度函数的卷积:
    f_Z(z) = \int_{-\infty}^{+\infty}f_X(x)f_Y(z-x)\mathrm dx\equiv f_X*f_Y

卷积怎么算呢?根据定义直接算,可以,但没必要。复习一下卷积定理:

函数卷积的傅里叶变换是函数傅里叶变换的乘积。

对于离散型随机变量,我们只需要用 FFT 算法计算 XY 的概率质量函数的离散傅里叶变换,然后作乘积,再作一次逆变换,即可求得 Z 的概率质量函数。对于连续型随机变量,则可以先离散化,然后用上述方法近似求解 Z 的概率密度函数。

作为调包工程师,我们直接调用 scipy.signal.fftconvolve 实现来上述操作。

例子

我们来验证一下。

假设 X\sim N(30, 10^2)Y\sim N(60, 5^2),则 Z\sim N(90, 10^2+5^2)

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.signal import fftconvolve

x = norm.pdf(np.arange(100), loc=30, scale=10)
y = norm.pdf(np.arange(100), loc=60, scale=5)
z = norm.pdf(np.arange(200), loc=90, scale=np.sqrt(125))
z_tilde = fftconvolve(x, y)

plt.subplot(121)
plt.plot(x, color='b', label='pdf of X')
plt.plot(y, color='g', label='pdf of Y')
plt.legend()
plt.subplot(122)
plt.plot(z, color='r', label='analytical pdf of Z')
plt.plot(z_tilde, color='y', label='numerical pdf of Z')
plt.legend()
plt.show()
正态分布之和

再看一个例子。

考虑一组独立的随机变量 X_1, X_2, \cdots, X_{100},满足 X_i\sim Bernoulli(0.3),即每个 X_i 均服从成功概率 p=0.3 的伯努利分布。令 Z=X_1+X_2+\cdots+X_{100},即 Z 是 100 次独立重复试验中成功的次数。根据定义,Z 服从二项分布。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom
from scipy.signal import fftconvolve
from functools import reduce

xs = [[0.7, 0.3] for _ in range(100)]
z = binom.pmf(np.arange(100), n=100, p=0.3)
z_tilde = reduce(fftconvolve, xs)

plt.plot(z, label='analytical pmf of Z')
plt.plot(z_tilde, label='numerical pmf of Z')
plt.legend()
plt.show()
伯努利分布之和

最后看看实际计算总需求时的效果:


从日需求到总需求

附录

附上卷积定理的简单推导:

考虑函数 f(t)g(t),以及它们的卷积 h=f*gf(t)g(t) 的傅里叶变换分别为
\hat f(\omega) = \int_{-\infty}^{+\infty}f(t)\mathrm e^{-i\omega t}\mathrm dt
\hat g(\omega) = \int_{-\infty}^{+\infty}g(t)\mathrm e^{-i\omega t}\mathrm dt
h(t) 的傅里叶变换为
\begin{aligned} \hat h(\omega) &= \int_{-\infty}^{+\infty}h(t)\mathrm e^{-i\omega t}\mathrm dt\\ &= \int_{-\infty}^{+\infty}\left[\int_{-\infty}^{+\infty}f(\tau)g(t-\tau)\mathrm d\tau\right]\mathrm e^{-i\omega t}\mathrm dt\\ &= \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(\tau)g(t-\tau)e^{-i\omega t}\mathrm dt\mathrm d\tau \end{aligned}
s=t-\tau,则 \mathrm ds = \mathrm dt
\begin{aligned} \hat h(\omega) & = \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(\tau)g(s)e^{-i\omega (\tau+s)}\mathrm ds\mathrm d\tau\\ &= \int_{-\infty}^{+\infty}f(\tau)e^{-i\omega \tau}\mathrm d\tau\int_{-\infty}^{+\infty}g(s)e^{-i\omega s}\mathrm ds\\ &=\hat f(\omega)\cdot\hat g(\omega) \end{aligned}

参考文献

推荐阅读更多精彩内容

  • 离散随机变量及其概率分布 一.随机变量 1.1随机变量 随机变量:假如一个变量在数轴上的取值依赖随机现象的基本结果...
    微斯人_吾谁与归阅读 5,800评论 0 9
  • 随机变量是根据偶然性取值的变量。我们在谈到随机变量时,通常是以“概率分布”的形式来描述他们。也即:随机变量落在每一...
    小狸投资阅读 3,102评论 1 7
  • 一、度量事件发生的可能性 概率 定义:概率是对事件发生的可能性大小的度量明天降水的概率是80%。这里的80%就是对...
    EvanForEver阅读 1,900评论 1 8
  • 基础概念 1.概率 概率直观上是指一个事件发生可能性大小的数量指标 概率的统计定义:在不变的条件下,重复进行nn次...
    凭栏听雨_t阅读 638评论 0 0
  • 今天是吃吃吃的一天 中午做了酸菜鱼 下午做了腊肉 明天带饭去公司吃 很讨厌现在的公司 但是为了自己经验的积累 加上...
    aaaaa朔阅读 24评论 0 0
  • 相关文章: [区块链] 密码学——椭圆曲线密码算法(ECC) 椭圆曲线算法:入门 ECC椭圆曲线详解(有具体实例)...
    王乐城愚人云端阅读 1,368评论 0 2
  • 做了一年多,桂香就有了固定的几个雇主。 第一个是个富二代,是真正的富二代,小姑娘自己住在市中心地段最好最贵的别墅里...
    一直想唠嗑的猫阅读 129评论 0 1
  • 夏天的早晨是被知了叫醒的 知了的叫声与晨风吹送的时间一样长 晨风吹动着柳枝轻轻摇曳 季节被轻轻招摇着并不显得灼热 ...
    二马行空阅读 124评论 0 7