NumPy 泊松分布模拟与 Seaborn 可视化技巧

泊松分布

简介

泊松分布是一种离散概率分布,用于描述在给定时间间隔内随机事件发生的次数。它常用于模拟诸如客户到达商店、电话呼叫接入中心等事件。

参数

泊松分布用一个参数来定义:

λ:事件发生的平均速率,表示在单位时间内事件发生的平均次数。

公式

泊松分布的概率质量函数 (PMF) 给出了在指定时间间隔内发生 k 次事件的概率,计算公式为:

1P(k) = e^(-λ) (λ^k) / k!

其中:

e^(-λ):表示没有事件发生的概率。 (λ^k):表示 k 次事件发生的概率。 k!:表示 k 个元素的阶乘,即 k × (k - 1) × (k - 2) × ... × 2 × 1。

生成泊松分布数据

NumPy 提供了 random.poisson() 函数来生成服从泊松分布的随机数。该函数接受以下参数:

lam:事件发生的平均速率。 size:输出数组的形状。

示例:生成一个平均速率为 5 的事件在 10 个时间间隔内发生的次数:

1import numpy as np 2 3data = np.random.poisson(lam=5, size=10) 4print(data)

可视化泊松分布

Seaborn 库提供了便捷的函数来可视化分布,包括泊松分布。

示例:绘制平均速率为 7 的事件在 1000 个时间间隔内发生的次数分布:

1import seaborn as sns 2import numpy as np 3 4data = np.random.poisson(lam=7, size=1000) 5sns.distplot(data) 6plt.show()

正态分布与泊松分布的关系

当事件发生的平均速率 λ 很大时,泊松分布可以近似为正态分布。其均值 μ 为 λ,标准差 σ 为 sqrt(λ)。

示例:比较泊松分布和正态分布的形状:

1import seaborn as sns 2import numpy as np 3 4lam = 50 5 6# 生成泊松分布数据 7data_poisson = np.random.poisson(lam=lam, size=1000) 8 9# 生成正态分布数据 10mu = lam 11sigma = np.sqrt(lam) 12data_normal = np.random.normal(loc=mu, scale=sigma, size=1000) 13 14sns.distplot(data_poisson, label="Poisson") 15sns.distplot(data_normal, label="Normal") 16plt.legend() 17plt.show()

练习

  1. 在一个小时内,一家商店平均收到 10 位顾客。模拟顾客到达商店的次数并绘制分布图。
  2. 比较不同平均速率下泊松分布形状的变化。
  3. 利用泊松分布来模拟一个呼叫中心每天接到的电话呼叫数量,并计算平均呼叫量和每天接听超过 30 个电话的概率。

解决方案

1import seaborn as sns 2import numpy as np 3import matplotlib.pyplot as plt 4 5# 1. 模拟顾客到达商店的次数并绘制分布图 6data = np.random.poisson(lam=10, size=1000) 7sns.distplot(data) 8plt.show() 9 10# 2. 比较不同平均速率下泊松分布形状的变化 11lam_values = [5, 10, 20, 50] 12for lam in lam_values: 13 data = np.random.poisson(lam=lam, size=1000) 14 sns.distplot(data, label=f"λ={lam}") 15plt.legend() 16plt.show() 17 18# 3. 模拟电话呼叫数量并计算平均呼叫量和每天接听超过 30 个电话的概率 19calls_per_day = np.random.poisson(lam=150, size=365) 20print("平均呼叫量:", calls_per_day.mean()) 21print("每天接听超过 30 个电话的概率:", (calls_per_day > 30).mean())

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

点赞
收藏

评论区

加载中...

相关推荐

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

用python重温统计学基础:离散型概率分布

简单介绍数据的分布形态描述中的离散型概率分布利用python中的matplotlib来模拟几种分布的图形在上一篇描述性统计(http://mp.weixin.qq.com/s?__bizMzg5NDE3Nzc5Mw&mid2247483743&idx1&sn8a0bff6f07d2c1804ccf301b400a263e&

用python重温统计学基础:离散型概率分布

简单介绍数据的分布形态描述中的离散型概率分布利用python中的matplotlib来模拟几种分布的图形在上一篇中提到数据分析的对象主要是结构化化数据,而所有的结构化数据可以从三个维度进行描述,即数据的集中趋势描述,数据的离散程度描述和数据的分布形态描述,并对前两个维度进行了介绍。本篇主要是对数据的分布形态描述中的离散型概率分布进行介绍。

Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移

NumPy 正态分布与 Seaborn 可视化指南

正态分布(高斯分布)是重要的概率模型,具有钟形曲线特征,由均值μ和标准差σ描述。NumPy的random.normal()可生成正态分布随机数,Seaborn库方便绘制分布图。正态分布广泛应用于统计学、机器学习、金融和工程等领域。练习包括生成正态分布数据、比较不同标准差影响及模拟考试成绩计算平均分和标准分。

NumPy 二项分布生成与 Seaborn 可视化技巧

二项分布是描述固定次数独立试验中成功次数的概率分布,常用于分析二元结果的事件,如抛硬币。分布由参数n(试验次数)、p(单次成功概率)和k(成功次数)定义。概率质量函数P(k)C(n,k)p^k(1p)^(nk)。NumPy的random.binomial()可生成二项分布数据,Seaborn可用于可视化。当n大且p接近0.5时,二项分布近似正态分布。练习包括模拟不同条件下的二项分布和应用到考试场景。