当前位置: 首页 > news >正文

贝叶斯统计入门

贝叶斯统计入门

贝叶斯统计是一种以系统和数学严密的方式来推理不确定性的方法。它以18世纪的数学家和哲学家托马斯·贝叶斯命名,他开发了一个定理,提供了一种在收集新数据时更新我们对假设的信念的方式。

在贝叶斯统计中,我们从一个先验概率分布开始,它代表了我们在看到任何数据之前对假设的信念。随着我们收集新数据,我们使用贝叶斯定理来更新这个先验分布,得到一个后验概率分布,它代表了在考虑我们观察到的数据后对假设的信念。

例子

为了举例说明,假设我们想要估计在即将举行的选举中将投票给某位候选人的选民比例。

我们首先有一个先验信念,即将投票给该候选人的选民比例在0到1之间是均匀分布的。随着我们收集新数据,比如一次民意调查的结果,我们可以使用贝叶斯定理来更新这个先验分布,得到一个考虑到我们获得的新信息的后验分布。

在贝叶斯统计中,后验分布通常用于进行预测或决策。例如,我们可以使用后验分布来估计某一事件发生的概率,或者决定是否接受或拒绝一个假设。

贝塔分布

在贝叶斯统计中常用的一个概率分布是贝塔分布。它是一个定义在区间[0,1]上的连续概率分布,因此特别适合建模比例或概率。

贝塔分布有两个参数,通常用alpha和beta表示,它们控制了分布的形状。

贝塔分布是二项分布的共轭先验,这意味着如果我们假设我们的数据是由一个具有固定试验次数和未知成功概率的二项分布生成的,并且我们选择贝塔分布作为我们的先验分布,那么后验分布也将是一个贝塔分布。

示例代码

让我们使用贝塔分布来更新我们对硬币抛掷实验的信念,其概率分布是二项分布。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import binom, beta

# 定义真实的成功概率
p_true = 0.7

# 从已知 p_true 的二项分布中生成一些数据
n_trials = 100
data = binom.rvs(n_trials, p_true)

# 定义先验贝塔分布的参数
alpha_prior = 10
beta_prior = 10

# 定义后验贝塔分布的参数
alpha_post = alpha_prior + data
beta_post = beta_prior + n_trials - data

# 创建先验和后验贝塔分布
x = np.linspace(01100)
prior = beta(alpha_prior, beta_prior)
posterior = beta(alpha_post, beta_post)

# 绘制先验和后验分布
plt.plot(x, prior.pdf(x), label='先验')
plt.plot(x, posterior.pdf(x), label='后验')
plt.axvline(x=p_true, color='red', linestyle='--', label='真实 p')
plt.legend()
plt.show()

这段代码从一个具有真实成功概率为0.7的二项分布中生成了100次试验。

然后,我们使用alpha=10和beta=10的贝塔分布作为成功概率的先验分布。

我们使用贝叶斯定理将这个先验分布与数据进行了更新,得到的后验分布也是一个贝塔分布。结果图显示了成功概率的先验和后验分布,以及表示真实成功概率的红色垂直线。

从图中可以看出,后验分布向右移动,表示我们现在更有信心硬币偏向正面。

正如图中所示,后验分布向真实的成功概率0.7方向偏移,表明我们已经根据观察到的数据更新了对成功概率的信念。

本文由 mdnice 多平台发布

http://www.lryc.cn/news/178323.html

相关文章:

  • 织梦CMS采集插件-DEDE插件大全
  • vuereact质检工具(eslint)安装使用总结
  • yolox相关
  • 递归专题训练详解(回溯,剪枝,深度优先)
  • JavaScript系列从入门到精通系列第七篇:JavaScrip当中的运算符,主要涉及JavaScript当中的六大数据类型的四则运算
  • 计算机网络 实验二 交换机的基本配置
  • Tor网络的全面解析
  • 数据集笔记:2015上海地铁一卡通数据
  • 【小沐学C++】C++ 基于Premake构建工程项目(Windows)
  • Linux shell编程学习笔记2:我是谁 | who am i ?
  • 移动端和PC端对比【组件库+调试vconsole +单位postcss-pxtorem+构建vite/webpack+可视化echarts/antv】
  • maven多模块依赖包程序包xxx不存在
  • iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!
  • 面试题库(八):docker和linux
  • 深入理解传输层协议:TCP与UDP的比较与应用
  • Python-表白小程序练习
  • 浅谈ChatGPT附免费体验地址
  • 队列的使用以及模拟实现(C++版本)
  • RV1126笔记四十一:RV1126移植LIVE555
  • stable diffusion模型评价框架
  • 电脑开机慢问题的简单处理
  • SpringMVC-Rest风格
  • WebGL实现透明物体(α混合)
  • RecycleView刷新功能
  • 目标检测如何演变:从区域提议和 Haar 级联到零样本技术
  • 聊一聊国内大模型公司,大模型面试心得、经验、感受
  • 【分布式微服务】feign 异步调用获取不到ServletRequestAttributes
  • c#编程里面最复杂的技术问题有哪些
  • github代码提交过程详细介绍
  • Linux -- 使用多张gpu卡进行深度学习任务(以tensorflow为例)