概率统计——讲透最经典的三种概率分布

2024-03-21 14:48

本文主要是介绍概率统计——讲透最经典的三种概率分布,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文始发于个人公众号:TechFlow

这一讲当中我们来探讨三种经典的概率分布,分别是伯努利分布、二项分布以及多项分布。

在我们正式开始之前,我们先来明确一个概念,我们这里说的分布究竟是什么?

无论是在理论还是实际的实验当中,一个事件都有可能有若干个结果。每一个结果可能出现也可能不出现,对于每个事件而言出现的可能性就是概率。而分布,就是衡量一个概率有多大。


伯努利分布


明确了分布的概念之后,我们先从最简单的伯努利分布开始。

伯努利分布非常简单,就是假设一个事件只有发生或者不发生两种可能,并且这两种可能是固定不变的。那么,显然,如果假设它发生的概率是p,那么它不发生的概率就是1-p。这就是伯努利分布。

生活中所有只可能出现两种结果并且概率保持不变的事件都可以认为服从伯努利分布,比如抛硬币,比如生孩子是男孩还是女孩。

伯努利实验就是做一次服从伯努利概率分布的事件,它发生的可能性是p,不发生的可能性是1-p。


二项分布


我们明确了伯努利分布之后再来看二项分布就简单了。说白了二项分布其实就是多次伯努利分布实验的概率分布。

以抛硬币举例,在抛硬币事件当中,每一次抛硬币的结果是独立的,并且每次抛硬币正面朝上的概率是恒定的,所以单次抛硬币符合伯努利分布。我们假设硬币正面朝上的概率是p,忽略中间朝上的情况,那么反面朝上的概率是q=(1-p)。我们重复抛n次硬币,其中有k项正面朝上的事件,就是二项分布。

我们来试着推导一下二项分布的公式:

假设我们抛了4次硬币,每一次都有两种可能,既可能正面朝上,也可能反面朝上。所以一共存在 2 4 = 16 2^4=16 24=16种情况,假设我们想知道4次当中有两次正面朝上的概率。我们写成 P ( X = 2 ) P(X=2) P(X=2),它应该是多少呢?

我们先来看一种情况,假设某一次抛掷当中,我们的结果是正正反反,记作:OOXX。那么,它的概率应该是 P = p p q q = p 2 q 2 P=ppqq=p^2q^2 P=ppqq=p2q2,但是这只是一种正面朝上两次的情况,与它相同的情况还有:

KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ P(OXOX)=pqpq=p…

以上的这5种都是两次正面朝上的情况,都满足要求,所以我们在计算概率的时候,需要乘上可能会导致两个正面朝上的种数。也就是说我们知道某一种 P ( X = 2 ) P(X=2) P(X=2)的情况发生的概率是 p 2 q 2 p^2q^2 p2q2,但是这样的情况一共有6种,所以我们需要乘上6.

那么我们怎么知道在n次试验当中,X=k的情况存在多少种呢?

这里就需要用到排列组合的知识,我想这一块在初高中数学课本上都有涉及。我们简单回顾一下。


排列


排列,指的是从n个项目当中选出k个来排成一排的情况种数。

我们设想一下,假设面前有5个人,我们要选出两个人来排成一排,一共有几种情况呢?由于是排列,所以这带个人的排列顺序是会对结果产生影响的。同样是AB两个人,A和B与B和A会被视为不同的情况。所以,显然第一个人有5种选择,第二个人有4种选择,所以总共有20种选择。

我们推广这个公式,当人数是n,候选人数是k的时候,情况种数应该是:

P n k = n ∗ ( n − 1 ) ∗ ( n − 2 ) ∗ ⋯ ∗ ( n − k + 1 ) = ∏ i = n n − k + 1 i = n ! ( n − k ) ! P_n^k=n*(n-1)*(n-2)*\cdots *(n-k+1)=\prod_{i=n}^{n-k+1}i=\frac{n!}{(n-k)!} Pnk=n(n1)(n2)(nk+1)=i=nnk+1i=(nk)!n!


组合


组合和排列很类似,唯一不同的是在组合当中不用考虑选出项的次序情况。排列是选出人来排成一排,那么组合是选出人来一起去做某件事。这些选出的人先后次序并不重要,重要的是组成。

还是5个人里挑选两个的情况,第一个人有5种选择,第二个人有4种选择。但这里我们还需要去除这选出来的两个人的排列的情况。2个人的排列一共有2种,所以最后的结果是5 * 4 / 2=10.

我们来推导一下公式,n个人里面选k个的排列有 n ! ( n − k ) ! \frac{n!}{(n-k)!} (nk)!n!,而k个人的全排列有: k ! k! k!种,所以两者相除就是组合数的结果:

C n k = n ! ( n − k ) ! k ! C_n^k=\frac{n!}{(n-k)!k!} Cnk=(nk)!k!n!

我们有了组合的公式之后,带入前文当中二项分布。我们做n次试验,其中有k个发生某事件的情况总数是 C n k C_n^k Cnk,所以总体的概率 P ( X = k ) = C n k p k q n − k P(X=k)=C_n^kp^kq^{n-k} P(X=k)=Cnkpkqnk

我们明白了二项分布之后,继续来看多项式分布。


多项式分布


多项式分布也很简单,是在二项分布的基础上进一步的拓展。

在现实世界当中,并不是所有事件都只有两个结果,最简单的例子就是骰子。我们每次投骰子会产生1-6,一共6种结果。我们假设这6种结果发生的概率分别是p1, p2, p3, p4, p5和p6,那么显然 ∑ i = 1 6 p i = 1 \sum_{i=1}^6p_i=1 i=16pi=1。在多项式分布当中,我们会问进行n次试验,这6种可能性分别出现的次数是(x1, x2, x3, x4, x5, x6)的概率是多少?

显然,如果 ∑ i = 1 6 x i ≠ n \sum_{i=1}^6x_i \neq n i=16xi=n,那么概率为0. 我们讨论相等时候的情况。

我们先计算一种组合发生的概率,不论这n项的顺序如何,显然都有 P = p 1 x 1 p 2 x 2 ⋯ p 6 x 6 P=p_1^{x_1}p_2^{x_2}\cdots p_6^{x_6} P=p1x1p2x2p6x6,那么这样的组合一共有多少个呢?

我们用组合公式来计算,首先是从n项中选出x1项来,一共有: C n x 1 = n ! ( n − x 1 ) ! x 1 ! C_n^{x_1}=\frac{n!}{(n-x_1)!x_1!} Cnx1=(nx1)!x1!n!。接着我们再选x2项,一共有: C n − x 1 x 2 = ( n − x 1 ) ! ( n − x 1 − x 2 ) ! x 2 ! C_{n-x_1}^{x_2}=\frac{(n-x_1)!}{(n-x_1-x_2)!x_2!} Cnx1x2=(nx1x2)!x2!(nx1)!。我们依次写出这6项,然后乘到一起,消除同类项之后,得到的结果是:

C = n ! x 1 ! x 2 ! ⋯ x 6 ! C=\frac{n!}{x_1!x_2!\cdots x_6!} C=x1!x2!x6!n!

最终的概率就是组合数乘上单个组合的概率:

P ( x 1 , x 2 , ⋯ , x 6 ) = n ! x 1 ! x 2 ! ⋯ x 6 ! p 1 x 1 p 2 x 2 ⋯ p 6 x 6 P(x_1, x2, \cdots, x_6)=\frac{n!}{x_1!x_2!\cdots x_6!}p_1^{x_1}p_2^{x_2}\cdots p_6^{x_6} P(x1,x2,,x6)=x1!x2!x6!n!p1x1p2x2p6x6

我们对比它和二项分布的公式,会发现,其实二项分布就是多项分布的一种特殊情况。而伯努利分布就是二项分布中n=1的特殊情况。这三种分布虽然各不相同,但是本质之间有着很深的联系,也因此,我们将它们放在一篇文章当中介绍。

到这里,关于这三种分布的介绍就结束了。如果觉得学有收获,就扫码给个关注吧~

这篇关于概率统计——讲透最经典的三种概率分布的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/832941

相关文章

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情