二项式分布(Binomial Distribution)

server/2025/3/28 15:46:48/

二项式分布(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/server/177121.html

相关文章

怎么查看linux是Ubuntu还是centos

要确定你的Linux系统是基于Ubuntu还是CentOS&#xff0c;可以通过几种不同的方法来进行判断。下面是一些常用的方法&#xff1a; 要快速判断 Linux 系统是 Ubuntu 还是 CentOS&#xff0c;可通过以下方法综合验证&#xff1a; 一、查看系统信息文件 1. /etc/os-release 文件…

Linux面试题

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

libaom 源码分析:scalable_decoder.c 文件

libaom 基本特性 开放和免版税&#xff1a;libaom 提供了一个开放源代码的编码器&#xff0c;任何个人和组织都可以免费使用&#xff0c;无需支付版税&#xff0c;这促进了它在各种应用中的广泛采用。高效的编码&#xff1a;旨在提供高效的视频压缩&#xff0c;以适应不同的网络…

doris:审计日志

Doris 提供了对于数据库操作的审计能力&#xff0c;可以记录用户对数据库的登陆、查询、修改操作。在 Doris 中&#xff0c;可以直接通过内置系统表查询审计日志&#xff0c;也可以直接查看 Doris 的审计日志文件。 开启审计日志​ 通过全局变量 enable_audit_plugin 可以随时…

GCC 预定义宏:解锁编译器的隐藏信息

GCC 预定义宏&#xff1a;解锁编译器的隐藏信息 在 GCC 编译器中&#xff0c;有许多内置的预定义宏&#xff0c;它们可以提供编译环境的信息&#xff0c;如文件名、行号、时间、版本等。这些宏在调试、日志记录、条件编译等场景中非常有用。本文将介绍常见的 GCC 预定义宏&…

SpringSecurity——前后端分离登录认证

SpringSecurity——前后端分离登录认证的整个过程 前端&#xff1a; 使用Axios向后端发送请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><script src"https://cdn…

基于DeepSeek的智能体搭建

智能体是什么&#xff1f; 智能体是一种生成式人工智能应用程 序&#xff0c;其核心是通过观察环境并利用工 具自主采取行动以实现特定目标。 智能体架构 •大模型&#xff08;Language Model&#xff09;&#xff1a;作为agent流程的集中决策者使用的语言模型&#xff0c;能…

网络华为HCIA+HCIP WLAN

目录 WLAN 敏捷分布式AP架构 有线侧组网概念&#xff1a;CAPWAP协议 CAPWAP隧道 功能 有线侧组网概念&#xff1a;AP-AC组网方式 有线侧组网概念&#xff1a;AC连接方式 无线侧组网概念&#xff1a;无线通信系统 无线侧组网概念&#xff1a;无线电磁波 无线侧组网概…