趣学贝叶斯统计:概率密度分布(probability density function)

目录

    • 1. 分布:PDF与PMF
      • PDF
      • PMF
    • 2. 将概率密度函数应用于我们的问题
    • 用积分量化连续分布
      • 积分
      • 度量变化率:导数
    • 3. R语言实践
    • 4. 小结

1. 分布:PDF与PMF

PDF

PDF定义在连续值上。在连续型随机变量的情况下,具体取某个数值的概率是0,因此PDF并不直接给出某个点的概率,而是给出了在某个区间内随机变量出现的概率密度。在数学上,PDF就是定义在连续值上的概率密度函数。

概率密度函数(probability density function,PDF): β \beta β 分布
B e t a ( p ; a , b ) = p a − 1 ⋅ ( 1 − p ) b − 1 B ( a , b ) Beta(p;a,b) = \frac{p^{a-1} \cdot (1-p)^{b-1}}{B(a, b)} Beta(p;a,b)=B(a,b)pa1(1p)b1
其中, 0 ≤ x ≤ 1 0\leq x \leq 1 0x1, a > b > 0 a \gt b \gt 0 a>b>0

p: 事件概率。黑盒子吐出两枚硬币可能概率的不同假设。
a:观察到的时间次数。黑盒子吐出两枚硬币。
b:事件不发生的次数。黑盒子吞掉硬币的次数。
实验总次数:a+b。

PMF

PMF实验总次数是n, k是感兴趣的发生次数。
注意:分子不一样。
f ( k ∣ n , p ) = ( n k ) p k ( 1 − p ) n − k f(k|n,p) = \binom{n}{k} p^k (1-p)^{n-k} f(kn,p)=(kn)pk(1p)nk
PMF分子是 p k ( 1 − p ) n − k p^k (1-p)^{n-k} pk(1p)nk
PDF分子是 p a − 1 ⋅ ( 1 − p ) b − 1 p^{a-1} \cdot (1-p)^{b-1} pa1(1p)b1指数项需要分别减1。我们从指数项中减去1,并使用beta函数归一化所得的值——这可以确保分布之和为1
我们最后得到了这样一个函数:它描述的是每个可能假设的概率,这些假设是我们相信从盒子里得到两枚硬币的概率,前提是给定我们已经观察到一种结果出现a次、另一种结果出现b次。
β \beta β 分布代表了所有可能的二项分布对观察结果的最高描述程度。

2. 将概率密度函数应用于我们的问题

a=14; b=27
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta# 定义参数
a = 14
b = 27# 生成 x 值的范围
x = np.linspace(0, 1, 1000)# 计算 Beta 分布的概率密度函数(PDF)
pdf = beta.pdf(x, a, b)# 绘制图形
plt.plot(x, pdf, 'r-', lw=2, label='PDF of Beta Distribution')
plt.title('Probability Density Function (PDF) of Beta Distribution (a=14, b=27)')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.legend()
plt.grid(True)
plt.show()

通过这个黑盒子赔钱的概率要比赢钱的概率大。虽然通过图5-3可以看出信念的分布,但我们还是希望能够准确地量化自己相信“黑盒子返回两枚硬币的概率小于0.5”的程度。要做到这一点,我们只需要懂一点微积分(和R语言)。

用积分量化连续分布

计算曲线下面积:积分
作者之前是不熟悉积分的,所以我们会从最基本的概念开始理解。依旧a=14; b=27, 我们想知道:吐出两枚硬币的可能性是 1 2 \frac {1}{2} 21 的概率是多少?
我们知道概率的基本规则是,所有概率的和必然等于1。但在连续分布里,每个单独的值都无穷小,这就意味着任何特定值的概率实际上都是0。
二项分布:想象一下,你把一块1千克重的巧克力(相当大!)平均分成了两份,那么每份就有 1 2 \frac {1}{2} 21 千克重。
连续分布:如果你把它平均分成了10份,那么每份将重 1 10 \frac {1}{10} 101千克。随着你将巧克力分成的份数越来越多,每一份就会变得越来越小,小到你甚至看不见它。当分成的份数无穷大时,每一份就会小得看不见,就好像消失了!

即使单独的每一份都消失了,我们仍然可以讨论一定范围内的情况。例如,即使将一块1千克重的巧克力分成了无限多块,我们仍然可以将其中一半块数的重量加起来。同样,当讨论连续分布中的概率时,我们也可以将某个范围内的值相加。但如果每个具体的值都接近于0,那么它们的和是不是仍然等于0呢?

积分

这就是微积分要解决的问题。在微积分中,有一种求无穷小值和的特殊方法,叫作积分(integral)。如果想知道黑盒子返回硬币的概率是否小于0.5(也就是值在0和0.5之间),那么我们可以这样求和:

∫ 0 0.5 f ( x ) d x \int_{0}^{0.5} f(x) \, dx 00.5f(x)dx

这里的∫只是一个拉伸后的S,意思是f(x)中所有矩形的面积之和。dx符号则提醒我们所谈论的是变量x很小的变化;d是表示这些矩形的一种数学方法。当然,在这个符号中只有一个变量x,所以我们不会混淆。而且,在本书中通常会删除dx(或变量中所使用的相应值),因为即使在示例中不写,我们也可以明白。

d i s t ( T ) = ∫ 0 T f ( t ) d t dist(T)= \int_{0}^{T} f(t) \, dt dist(T)=0Tf(t)dt
积分可以帮助我们把“某一时间的速度”,转化为函数即“某一段时间的跑步距离”。

度量变化率:导数

这里使用了类似于前面解释积分的方法:积分时把曲线下的区域分成越来越细的矩形,直到包含无数个细矩形,然后将它们的面积相加;只不过这里是把曲线分成无数个小线段。最终,我们得到了一个新的函数而不是单一的斜率m,来表示原始函数中每个点的变化率。这被称为导数(derivative).
d d x F ( x ) = f ( x ) \frac{d}{dx}F(x)=f(x) dxdF(x)=f(x)
F为f的原函数。

现在假设对函数f,我们想在10和50之间对其积分,也就是要计算:
∫ 10 50 f ( x ) d x = F ( 50 ) − F ( 10 ) \int_{10}^{50} f(x) \, dx=F(50)-F(10) 1050f(x)dx=F(50)F(10)

积分和导数之间的关系被称为微积分基本定理(fundamental theorem of calculus)。这是一个相当神奇的工具,因为它允许用数学方法来解决积分问题,这往往要比求导数困难得多。

3. R语言实践

R语言中有一个名为dbeta()的函数,它就是beta分布的PDF。将它和integrate()函数一起使用就可以自动计算积分。

计算0-0.5之间的概率密度:

> integrate(function(p) dbeta(p,14,27),0,0.5)

结果:

0.9807613 with absolute error < 5.9e-06

之所以出现绝对误差(absolute error),是因为计算机不能完美地计算积分,而总会有一些误差。不过通常情况下误差很小,我们不用担心。R语言计算出的这个结果告诉我们,根据目前观察到的数据,从黑盒子中得到两枚硬币的真实概率小于0.5的概率高达0.98。这意味着往黑盒子里放更多的硬币不是好主意,因为你很有可能会输钱。

我们可以用收集到的数据去计算抽牌/抽奖时,是否应该去碰运气。

4. 小结

在本章中,我们学习了Beta分布,它与二项分布密切相关,其起作用的方式却大不相同。我们通过观察大量可能的二项分布对数据的解释程度建立了Beta分布。由于假设的数量无穷多,因此我们需要一个连续的概率分布来描述所有的假设。Beta分布让我们能够表示自己对所有可能结果的出现概率有多大信心。这使得我们能够对观察到的数据进行统计推理,其方式是通过确定将哪些概率分配给一个事件以及确定自己相信每个概率的程度,这就是表示概率范围的概率。

Beta分布与二项分布的主要区别在于,Beta分布是一个连续的概率分布。由于在分布中有无限多的值,因此我们不能像在离散概率分布中那样对结果进行求和,而是需要使用微积分对一定范围内的数值进行求和。幸运的是,我们可以使用R语言代替手动求解复杂的积分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/259980.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea将springboot打包成jar包

打开idea->view->Tool Windows->Terminal 在控制台输入&#xff1a; mvn clean package

HarmonyOS 通过getInspectorByKey获取指定元素高宽等属性

例如 这里 我们有这样一个组件 Entry Component struct Dom {build() {Column() {Row() {Circle({ width: 200, height: 200 }).fill(#20101010)}.id(ES)}.width(100%).height(100%)} }这里 我们就写了个很基本的组件结构 然后 我们写了个 Circle 组件 定义了宽高 然后 如果我…

设计模式七大原则

七大原则有&#xff1a; 单一原则原则接口隔离原则依赖倒转原则里氏替换原则开闭原则迪米特法则合成复用原则 1 单一职责原则 1.1 基本介绍 ​ 对类来说的&#xff0c;即一个类应该只负责一项职责。 如类A负责两个不同的职责&#xff1a;职责1&#xff0c;职责2。当职责1需…

MATLAB实现朴素贝叶斯分类

朴素贝叶斯&#xff08;Naive Bayes&#xff09;是一种基于贝叶斯定理的分类算法&#xff0c;它假设特征之间相互独立&#xff0c;从而简化了计算复杂性。该算法常用于文本分类、垃圾邮件过滤、情感分析等应用场景。 MATLAB实现鸢尾花数据集分类代码如下&#xff1a; clear lo…

【C语言】通讯录(静态版本+动态版本)思路解析+完整源代码

通讯录 由于代码比较长&#xff0c;为了增加可读性&#xff0c;分成了contact.h&#xff0c;contact.c&#xff0c;test.c&#xff0c;分别用来声明函数或者类型&#xff0c;实现函数功能&#xff0c;测试代码 contact.h 我们希望通讯录具有增加联系人&#xff0c;删除联系人…

Eclipse 创建 Hello World 工程

Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name&#xff1a;工程名…

【小沐学GIS】基于C++QT绘制三维数字地球Earth(OpenGL)

&#x1f37a;三维数字地球系列相关文章如下&#x1f37a;&#xff1a;1【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第一期2【小沐学GIS】基于C绘制三维数字地球Earth&#xff08;456:OpenGL、glfw、glut&#xff09;第二期3【小沐…

Redis篇----第三篇

系列文章目录 文章目录 系列文章目录前言一、缓存雪崩**二、缓存穿透三、缓存预热四、缓存更新五、缓存降级 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女…

【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题

文章目录 Jprofiler简介1.安装及IDEA集成Jprofiler2.如何监控并解决死锁3.如何监控及解决内存泄露(重点)4.总结5.后话 Jprofiler简介 Jprofilers是针对Java开发的性能分析工具(免费试用10天), 可以对Java程序的内存,CPU,线程,GC,锁等进行监控和分析, 1.安装及IDEA集成Jprofil…

【AIGC】Stable Diffusion的生成参数入门

Stable Diffusion 的生成参数是用来控制图像生成过程的重要设置&#xff0c;下面是一些常见的生成参数及其详解 1、采样器&#xff0c;关于采样器的选择参照作者的上一篇文章 2、采样步数&#xff08;Sampling Steps&#xff09;是指在生成图像时模型执行的总步数&#xff0c…

计算机网络——18无连接传输UDP

无连接传输UDP UDP “尽力而为的”服务&#xff0c;报文段可能 丢失送到应用进程的报文段乱序 无连接 UDP发送端和接收端之间没有握手每个UDP报文段都被独立的处理 UDP被用于 流媒体DNSSNMP 在UDP上实现可靠传输 在应用层增加可靠性应用特定的差错格式 UDP&#xff1a;用户…

unity学习(19)——客户端与服务器合力完成注册功能(1)入门准备

逆向服务器用了三天的时间&#xff0c;但此时觉得一切都值&#xff0c;又可以继续学习了。 服务器中登录请求和注册请求由command变量进行区分&#xff0c;上一层的type变量都是login。 public void process(Session session, SocketModel model) {switch (model.Command){ca…

C++学习:stack

1.stack的定义和结构 stack是一种后进先出(LIF0)的数据结构&#xff0c;使用前需要包含头文件,stack提供了一组函数来操作和访问元素&#xff0c;但它的功能相对较简单。stack的定义和结构如下(仅作了解即可): template<class T, class (ontainer deque<T>> cla…

CTFshow web(php命令执行 68-71)

web68 还是那句话&#xff0c;没看到flag在哪&#xff0c;那就优先找到flag位置 这里cvar_dump(scandir("/")); 直接输出根目录的位置&#xff0c;然后查看源代码&#xff0c;发现flag位置为flag.txt 知道flag在根目录下面的flag.txt直接访问就好了 cinclude(/flag…

element 表单提交图片(表单上传图片)

文章目录 使用场景页面效果前端代码 使用场景 vue2 element 表单提交图片   1.点击【上传图片】按钮择本地图片&#xff08;只能选择一张图片&#xff09;后。   2.点击图片&#xff0c;支持放大查看。   3.点击【保存】按钮&#xff0c;提交表单。 页面效果 前端代码…

K8s服务发现组件之CoreDNS/NodeLocalDNS /kubeDNS

1 coredns 1.1 概述 1.1.1 什么是CoreDNS CoreDNS 是一个灵活可扩展的 DNS 服务器&#xff0c;可以作为 Kubernetes 集群 DNS&#xff0c;在Kubernetes1.12版本之后成为了默认的DNS服务。 与 Kubernetes 一样&#xff0c;CoreDNS 项目由 CNCF 托管。 coredns在K8S中的用途,…

机器人常用传感器分类及一般性要求

机器人传感器的分类 传感技术是先进机器人的三大要素&#xff08;感知、决策和动作&#xff09;之一。根据用途不同&#xff0c;机器人传感器可以分为两大类&#xff1a;用于检测机器人自身状态的内部传感器和用于检测机器人相关环境参数的外部传感器。 内部传感器 内部传感…

Allegro172版本如何用自带功能改变过孔网络属性操作指导

Allegro172版本如何用自带功能改变过孔网络属性操作指导 在用Allegro做PCB设计的时候,时常会需要将过孔的网络进行变更,可以将原来的过孔删除,再重新打一个,这种方法难免会繁琐一些。 当然我们可以借助skill工具来完成更换过孔网络的更改,除此之外,Allegro自带的功能完成…

【.NET Core】深入理解async 和 await 理解

【.NET Core】深入理解async 和 await 理解 文章目录 【.NET Core】深入理解async 和 await 理解一、概述二、async异步执行机制理解三、async与await应用3.1 async与await简单应用3.2 带有返回值async与await应用 四、async和await中常见问题总结4.1 当方法用async标识时&…

Editing While Playing 使用 Easyx 开发的 RPG 地图编辑器 tilemap eaitor

AWSD移动画布 鼠标右键长按拖拽 鼠标左键长按绘制 可以边拖拽边移动画布边绘制。 F1 导出 DLC F2 导入DLC author: 民用级脑的研发记录 1309602336qq.com 开发环境&#xff1a; 内置 easyx 的 devc 5.11 或者 VS 2022 TDM GCC 4.9.2 64-bit c11及以上都可运行 windows 环境运行…