IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> poisson分布的推导与理解 -> 正文阅读

[数据结构与算法]poisson分布的推导与理解

1.概述

?泊松分布源于泊松过程,与指数分布,伽马分布有着紧密的联系,本文在参考相关资料的基础上,进行详细推导以加深理解。

2.推导与理解

2.1直观对比

? 泊松分布可以由二项分布推导得到!二项分布与泊松分布的pdf分别如下:

? ? ? ??????????????????Bin(k,n|p)=Pr(X=k))\triangleq \binom{n}{k}p^k (1-p)^{n-k}? ? ? ? ? ? ? ? ? (1)

? ? ? ??????????????????????????Poi (x|\lambda) =\Pr(X = k) = e^{-\lambda}\frac{\lambda^k}{k!}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2)

直观的来看二项分布和泊松分布似乎无关。但仔细观察会发现一种非常有趣的关系。泊松分布只是二项分布的一个特例——即试验的数量足够大,从而给定的成功概率p?就很小。当n趋于无穷大且 p接近零时,二项分布就接近泊松分布。

2.2 详细推导

当我们有固定数量的事件 n 时,每个事件的成功概率 p?都是恒定的,此时上述二项分布有效。

想象一下,假定我们不知道会进行多少次试验。相反,我们只知道每个时间段的平均成功次数。也就是说比如我们知道每天事件的成功率,但不知道导出该比率的试验次数 n或成功概率p

定义一个数字

???????????????????????????????????????????????????????????????????????? \lambda=np

让它表示每天的成功率(特定时间的成功次数)。用试验次数 n(无论有多少次)乘以每次试验的成功概率 p?。

可以这样想:如果成功的机会是 p? 并且我们每天运行 n? 次试验,我们将观察到平均每天 np 次成功。这是我们观察到的成功率 \lambda?(平均成功次数)。

再看一次二项分布如下所示:

????????????????????????????????? ??Bin(p,n)=P(X=k)= \binom{n}{k}p^k (1-p)^{n-k}

如上所述,当我们定义\lambda如下时:

????????????????????????????????????????????????????????????????????????\lambda=np

求解 p,我们得到:

????????????????????????????????????????????????????????????????????????\Rightarrow p=\frac{\lambda}{n}

我们用这个表达式代替 p? 到上面的二项分布中,并在 n 趋于无穷时取其极限,即

????????????????\lim_{n \rightarrow +\infty }P(X=k) = \lim_{n \rightarrow +\infty}\frac{n!}{(n-k)!k!}\left ( \frac{\lambda}{n} \right )^k\left ( 1-\frac{\lambda}{n} \right )^{n-k}

取出常数

??????????????????????????????????????????????????????????????????????????????????????????????????????????? \lambda^k

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? \frac{1}{k!}

并将右边 n-k??次方的项分解为 n 次方的项和 -k 次方的项,我们得到

????????????????????????????????\left (\frac{\lambda^k}{k!} \right )\lim_{n \rightarrow +\infty}\frac{n!}{(n-k)!}\left ( \frac{1}{n^k} \right )\left ( 1-\frac{\lambda}{n} \right )^{n}\left ( 1-\frac{\lambda}{n} \right )^{-k}

现在让我们取右边第一项的极限。我们可以分为三步进行。第一步是找到极限

???????????????????????????????????????????????? ? ??\lim_{n \rightarrow +\infty}\frac{n!}{(n-k)!}\left ( \frac{1}{n^k} \right )

在上式中,我们可以将分子与分母中的阶乘分别展开得到

???????????????????????????????\lim_{n \rightarrow +\infty}\frac{n(n-1)(n-2)...(n-k)(n-k-1)...(1)}{(n-k)(n-k-1)...(1)}\left ( \frac{1}{n^k} \right )

这样写,很明显,分子和分母的许多项抵消了,最终得到以下结果:

??????????????????????????????? ?\lim_{n \rightarrow +\infty}\frac{n(n-1)(n-2)...(n-k+1)}{n^k}???????

由于我们抵消了 n-k 项,这里的分子剩下 k 项,从 n 到 n-k+1。而在分母中也有 k 项,因为有 n的?k 次幂。

然后展开分子与分母,我们可以将其重写为:

????????????????????????????????????????\lim_{n \rightarrow +\infty}\left (\frac{n}{n} \right )\left (\frac{n-1}{n} \right )\left (\frac{n-2}{n} \right )...\left (\frac{n-k+1}{n} \right )

这有 k 项。显然,当 n 接近无穷大时,这些 k 项中的每一项都接近 1。所以我们知道这一步的求解最终简化为一个1。这样我们就完成了第一步。

第二步是找到极限表达式中间项的极限,即

????????????????????????????????????????????????????????\lim_{n \rightarrow +\infty}\left (1-\frac{\lambda}{n} \right )^n

再联想到

????????????????????????????????????????????????????????e=\lim_{x \rightarrow +\infty}\left (1+\frac{1}{x} \right )^x???????

我们的目标是找到一种方法来操纵我们的表达式,使其看起来更像 e? 的定义,因为我们知道它的极限。首先可以定义一个变量?x

????????????????????????????????????????????????????????????????x = -\frac{n}{\lambda}

现在让我们将其代入上述表达式,并采用如下变换:

????????????????????????????????????????\lim_{n \rightarrow +\infty}\left (1-\frac{\lambda}{n} \right )^n=\lim_{x \rightarrow +\infty}\left (1+\frac{1}{x} \right )^{x(-\lambda)}=e^{-\lambda}

这个第二项最终简化得到?e^{-\lambda}。这样我们就完成了第二步。只剩下最后第三步。我们的第三步也就是最后一步是找到右边最后一项的极限,即

????????????????????????????????????????????????????????\lim_{n \rightarrow +\infty}\left (1-\frac{\lambda}{n} \right )^{-k}

这很简单。当? n?接近无穷大时,此项变为1^{-k} ,等于 1。这样将这三个结果放在一起,我们可以将原来的极限改写为

???????????????????????\left (\frac{\lambda^k}{k!} \right )\lim_{n \rightarrow +\infty}\frac{n!}{(n-k)!}\left ( \frac{1}{n^k} \right )\left ( 1-\frac{\lambda}{n} \right )^{n}\left ( 1-\frac{\lambda}{n} \right )^{-k}=\left (\frac{\lambda^k}{k!} \right )1\cdot (e^{-\lambda})\cdot 1

也就是:

??????????????????????????????????? ??Pr(\lambda,k)=\lim_{n \rightarrow +\infty}\binom{n}{k}p^k (1-p)^{n-k}=\frac{\lambda^ke^{-\lambda}}{k!}

这就是广泛熟悉的泊松分布概率质量函数pmf,给出了给定参数?\lambda?的每个周期成功 k 次的概率。

所以我们就证明了泊松分布只是二项分布的一个特例,其中 n 次试验的数量增长到无穷大,并且任何一次试验的成功概率都接近于零。泊松分布与二项分布的pdf曲线对比如下。

import numpy as np
from matplotlib import pyplot as plt

import operator as op
from functools import reduce

def const(n, r):
    r = min(r, n-r)
    numer = reduce(op.mul, range(n, n-r, -1), 1)
    denom = reduce(op.mul, range(1, r+1), 1)
    return numer / denom

def binomial(n, p):
    q = 1 - p
    #y = [const(n, k) * (p ** k) * (q ** (n-k)) for k in range(n)]
    xlist = []
    ylist = []
    for k in range(n):
        x = k
        y = const(n, k) * (p ** k) * (q ** (n-k))
        xlist.append(x)
        ylist.append(y)
    return xlist, ylist, np.mean(ylist), np.std(ylist)


def poisson(x, lamb):
    xlist = []
    ylist = []
    for k in range(x):
        xlist.append(k)
        numer = np.exp(-lamb)*(lamb**k)
        denom = reduce(op.mul, range(1, int(k+1)), 1)
        y = numer/denom
        ylist.append(y)
    return xlist, ylist, np.mean(ylist), np.std(ylist)


fig,axes = plt.subplots(2,1, figsize=(6,9)) #get 1x1 subplots
axes[0].set_xlabel("trial times(n)", fontsize="12") #set the coordinate axis-x label
axes[0].set_ylabel("Probability", fontsize="12") #set the coordinate axis-y label
axes[0].set_title(u"Comparing PMF of Poisson Dist. and Binomial Dist.",fontsize=12)
 
axes[1].set_xlabel("trial times(n)", fontsize="12") #set the coordinate axis-x label
axes[1].set_ylabel("Probability", fontsize="12") #set the coordinate axis-y label

for idx, ls in enumerate([(4, 8),(4,50)]):
    lamb, n = ls[0], ls[1]
    p = lamb/n
    xb, yb, _, _ = binomial(n, p)
    x, y, _, _ = poisson(n, lamb=lamb)

    axes[idx].plot(xb, yb, '--o', label=r'$poisson(\lambda=%.2f)$' % (lamb))
    axes[idx].plot(x, y, '--o', label=r'binomial(n=%d, p=%.2f)' % (n, p))
    
    axes[idx].legend()
    axes[idx].legend()
#plt.savefig('./graph/binomial-poisson.png')

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:30:41  更:2022-06-06 17:32:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 1:53:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码