二项式分布(Binomial Distribution)

devtools/2025/4/1 5:52:41/

二项式分布(Binomial Distribution)


定义

让我们来看看玩板球这个例子。假设你今天赢了一场比赛,这表示一个成功的事件。你再比了一场,但你输了。如果你今天赢了一场比赛,但这并不表示你明天肯定会赢。我们来分配一个随机变量X,用于表示赢得的次数。 X可能的值是多少呢?它可以是任意值,这取决于你掷硬币的次数。

只有两种可能的结果,成功和失败。因此,成功的概率 = 0.5,失败的概率可以很容易地计算得到:q = p – 1 = 0.5。

二项式分布就是只有两个可能结果的分布,比如成功或失败、得到或者丢失、赢或败,每一次尝试成功和失败的概率相等。

结果有可能不一定相等。如果在实验中成功的概率为0.2,则失败的概率可以很容易地计算得到 q = 1 - 0.2 = 0.8。

每一次尝试都是独立的,因为前一次投掷的结果不能决定或影响当前投掷的结果。只有两个可能的结果并且重复n次的实验叫做二项式。二项分布的参数是n和p,其中n是试验的总数,p是每次试验成功的概率。

在上述说明的基础上,二项式分布的属性包括:

  • 每个试验都是独立的。
  • 在试验中只有两个可能的结果:成功或失败。
  • 总共进行了n次相同的试验。
  • 所有试验成功和失败的概率是相同的。 (试验是一样的)

公式

B i n o m ( k ∣ N , p ) = ( N k ) p k ( 1 − p ) N − k Binom(k|N,p) = {N \choose k}p^{k}(1-p)^{N-k} Binom(kN,p)=(kN)pk(1p)Nk
N ⋅ p N \cdot p Np 表示分布的均值

  • PMF( 概率质量函数 ): 是对 离散随机变量 的定义. 是 离散随机变量 在各个特定取值的概率. 该函数通俗来说,就是 对于一个离散型概率事件来说, 使用这个函数来求它的各个成功事件结果的概率.

  • PDF ( 概率密度函数 ): 是对 连续性随机变量 的定义. 与PMF不同的是 PDF 在特定点上的值并不是该点的概率, 连续随机概率事件只能求一段区域内发生事件的概率, 通过对这段区间进行积分来求. 通俗来说, 使用这个概率密度函数 将 想要求概率的区间的临界点( 最大值和最小值)带入求积分. 就是该区间的概率.

python"># IMPORTS
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import matplotlib.style as style
from IPython.core.display import HTML# PLOTTING CONFIG
%matplotlib inline
style.use('fivethirtyeight')
plt.rcParams["figure.figsize"] = (14, 7)plt.figure(dpi=100)# PDF
plt.bar(x=np.arange(20), height=(stats.binom.pmf(np.arange(20), p=.5, n=20)), width=.75,alpha=0.75)
# CDF
plt.plot(np.arange(20),stats.binom.cdf(np.arange(20), p=.5, n=20),color="#fc4f30",)# LEGEND
plt.text(x=4.5, y=.7, s="pmf (normed)", alpha=.75, weight="bold", color="#008fd5")
plt.text(x=14.5, y=.9, s="cdf", alpha=.75, weight="bold", color="#fc4f30")# TICKS
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which = 'major', labelsize = 18)
plt.axhline(y = 0.005, color = 'black', linewidth = 1.3, alpha = .7)# TITLE, SUBTITLE & FOOTER
plt.text(x = -2.5, y = 1.25, s = "Binomial Distribution - Overview",fontsize = 26, weight = 'bold', alpha = .75)
plt.text(x = -2.5, y = 1.1, s = 'Depicted below are the normed probability mass function (pmf) and the cumulative density\nfunction (cdf) of a Binomial distributed random variable $ y \sim Binom(N, p) $, given $ N = 20$ and $p =0.5 $.',fontsize = 19, alpha = .85)

在这里插入图片描述

python">plt.figure(dpi=100)# PDF P = .2
plt.scatter(np.arange(21),(stats.binom.pmf(np.arange(21), p=.2, n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),(stats.binom.pmf(np.arange(21), p=.2, n=20)),alpha=0.75,)# PDF P = .5
plt.scatter(np.arange(21),(stats.binom.pmf(np.arange(21), p=.5, n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),(stats.binom.pmf(np.arange(21), p=.5, n=20)),alpha=0.75,)# PDF P = .9
plt.scatter(np.arange(21),(stats.binom.pmf(np.arange(21), p=.9, n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),(stats.binom.pmf(np.arange(21), p=.9, n=20)),alpha=0.75,)# LEGEND
plt.text(x=3.5, y=.075, s="$p = 0.2$", alpha=.75, weight="bold", color="#008fd5")
plt.text(x=9.5, y=.075, s="$p = 0.5$", alpha=.75, weight="bold", color="#fc4f30")
plt.text(x=17.5, y=.075, s="$p = 0.9$", alpha=.75, weight="bold", color="#e5ae38")# TICKS
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which = 'major', labelsize = 18)
plt.axhline(y = 0, color = 'black', linewidth = 1.3, alpha = .7)# TITLE, SUBTITLE & FOOTER
plt.text(x = -2.5, y = .37, s = "Binomial Distribution - $p$",fontsize = 26, weight = 'bold', alpha = .75)
plt.text(x = -2.5, y = .32, s = 'Depicted below are three Binomial distributed random variables with varying $p $. As one can see\nthe parameter $p$ shifts and skews the distribution.',fontsize = 19, alpha = .85)

在这里插入图片描述


N对结果的影响

python">plt.figure(dpi=100)# PDF N = 10
plt.scatter(np.arange(11),(stats.binom.pmf(np.arange(11), p=.5, n=10)),alpha=0.75,s=100)
plt.plot(np.arange(11),(stats.binom.pmf(np.arange(11), p=.5, n=10)),alpha=0.75,)# PDF N = 15
plt.scatter(np.arange(16),(stats.binom.pmf(np.arange(16), p=.5, n=15)),alpha=0.75,s=100)
plt.plot(np.arange(16),(stats.binom.pmf(np.arange(16), p=.5, n=15)),alpha=0.75,)# PDF N = 20
plt.scatter(np.arange(21),(stats.binom.pmf(np.arange(21), p=.5, n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),(stats.binom.pmf(np.arange(21), p=.5, n=20)),alpha=0.75,)# LEGEND
plt.text(x=6, y=.225, s="$N = 10$", alpha=.75, weight="bold", color="#008fd5")
plt.text(x=8.5, y=.2, s="$N = 15$", alpha=.75, weight="bold", color="#fc4f30")
plt.text(x=11, y=.175, s="$N = 20$", alpha=.75, weight="bold", color="#e5ae38")# TICKS
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which = 'major', labelsize = 18)
plt.axhline(y = 0, color = 'black', linewidth = 1.3, alpha = .7)# TITLE, SUBTITLE & FOOTER
plt.text(x = -2.5, y = .31, s = "Binomial Distribution - $N$",fontsize = 26, weight = 'bold', alpha = .75)
plt.text(x = -2.5, y = .27, s = 'Depicted below are three Binomial distributed random variables with varying $N$. As one can see\nthe parameter $N$ streches the distribution (the larger $N$ the flatter the distribution).',fontsize = 19, alpha = .85)

在这里插入图片描述

随机样本(Random Variates)

python">import numpy as np
from scipy.stats import binom# draw a single sample
np.random.seed(42)
print(binom.rvs(p=0.3, n=10), end="\n\n")# draw 10 samples
print(binom.rvs(p=0.3, n=10, size=10), end="\n\n")

Probability Mass Function

python">from scipy.stats import binom# additional imports for plotting purpose
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["figure.figsize"] = (14,7)# likelihood of x and y
x = 1
y = 7
print("pmf(X=1) = {}\npmf(X=7) = {}".format(binom.pmf(k=x, p=0.3, n=10), binom.pmf(k=y, p=0.3, n=10)))# continuous pdf for the plot
x_s = np.arange(11)
y_s = binom.pmf(k=x_s, p=0.3, n=10)
plt.scatter(x_s, y_s, s=100);

在这里插入图片描述

Cumulative Probability Density Function

python">from scipy.stats import binom# probability of x less or equal 0.3
print("P(X <=3) = {}".format(binom.cdf(k=3, p=0.3, n=10)))# probability of x in [-0.2, +0.2]
print("P(2 < X <= 8) = {}".format(binom.cdf(k=8, p=0.3, n=10) - binom.cdf(k=2, p=0.3, n=10)))

http://www.ppmy.cn/devtools/170646.html

相关文章

c#难点整理2

1.对象池的使用 就是先定义一系列的对象&#xff0c;用一个&#xff0c;调一个。 public class ObjectPool<T> where T : new(){private Queue<T> pool; // 用于存储对象的队列private int maxSize; // 对象池的最大容量// 构造函数public ObjectPool(int maxSi…

2Dslam前端分类

文章目录 扫描匹配ICP核心思想具体流程&#xff1a; 似然场核心思想&#xff1a;基本原理&#xff1a;具体流程&#xff1a; 扫描匹配 Scan-to-Scan&#xff08;扫描到扫描&#xff09;匹配 扫描到扫描匹配是最基本的扫描匹配方法&#xff0c;通过比较当前扫描数据与上一扫描数…

Linux:基础IO---文件描述符

文章目录 1. 前言1.1 C语言文件知识回顾 2. 文件2.1 文件基础知识 3. 被打开的文件3.1 以C语言为主&#xff0c;先回忆一下C文件接口3.2 过渡到系统&#xff0c;认识文件系统调用3.3 访问文件的本质3.4 重定向&&缓冲区 序&#xff1a;在深入了解了进程的内容后&#xf…

开源模型应用落地-shieldgemma-2-4b-it模型小试-多模态内容安全检测(一)

一、前言 在人工智能迅速发展的过程中,内容安全成为AI应用中的一个重要挑战。谷歌团队于2025年3月推出了一款名为ShieldGemma-2-4B-IT的模型,它以创新的多模态安全检测能力,为行业树立了新的开源责任AI标准。 与早期的仅支持文本审核的版本相比,ShieldGemma-2-4B-IT在谷歌的…

数据结构之链表(双链表)

目录 一、双向带头循环链表 概念 二、哨兵位的头节点 优点&#xff1a; 头节点的初始化 三、带头双向链表的实现 1.双链表的销毁 2.双链表的打印 3.双链表的尾插和头插 尾插&#xff1a; 头插&#xff1a; 4.双链表的尾删和头删 尾删&#xff1a; 头删&#xff1a; …

KUKA机器人信息编程程序

KUKA机器人在 KUKA.HMI示教器的信息窗口中对每一条信息提示均显示一个相应的图标。 图标与信息提示类型固定对应,无法由程序员改变。有如下类型的信息提示,可对他们进行编程。 一、测试程序如下: 1、先声明所需的变量 DEF M1 ( ) DECL KRLMSG_T my1,my2,…

封装一个分割线组件

最终样式 Vue2代码 <template><div class"sep-line"><div class"sep-label"><span class"sep-box-text"><slot>{{ title }}</slot> <!-- 默认插槽内容&#xff0c;如果没有传递内容则使用title -->&…

浅谈ai工程落地 - 蒸馏 vs 剪枝 vs 量化

前言 曾在游戏世界挥洒创意&#xff0c;也曾在前端和后端的浪潮间穿梭&#xff0c;如今&#xff0c;而立的我仰望AI的璀璨星空&#xff0c;心潮澎湃&#xff0c;步履不停&#xff01;愿你我皆乘风破浪&#xff0c;逐梦星辰&#xff01; 一句话总结为什么量化目前完胜 ✅ 蒸馏的…