原文链接:http://tecdat.cn/?p=24103

原文出处:拓端数据部落公众号

此示例说明如何使用逻辑回归模型进行贝叶斯推断。

统计推断通常基于最大似然估计 (MLE)。MLE 选择能够使数据似然最大化的参数,是一种较为自然的方法。在 MLE 中,假定参数是未知但固定的数值,并在一定的置信度下进行计算。在贝叶斯统计中,使用概率来量化未知参数的不确定性,因而未知参数被视为随机变量。

贝叶斯推断

贝叶斯推断是结合有关模型或模型参数的先验知识来分析统计模型的过程。这种推断的根基是贝叶斯定理:

例如,假设我们有正态观测值

其中 sigma 是已知的,theta 的先验分布为

在此公式中,mu 和 tau(有时也称为超参数)也是已知的。如果观察 X 的 n 个样本,我们可以获得 theta 的后验分布

下图显示 theta 的先验、似然和后验。


y = norpdf(thta, posMan,psSD);
plot(theta'-', theta,'--', theta,'-.')

汽车实验数据

在一些简单的问题中,例如前面的正态均值推断示例,很容易计算出封闭形式的后验分布。但是,在涉及非共轭先验的一般问题中,后验分布很难或不可能通过分析来进行计算。我们将以逻辑回归作为示例。此示例包含一个实验,以帮助建模不同重量的汽车在里程测试中的未通过比例。数据包括被测汽车的重量、汽车数量以及失败次数等观测值。我们采用一组经过变换的重量,以减少回归参数估值的相关性。

% 一组汽车的重量
% 每个重量下测试的汽车数量
[48 42 31 34 31 21 23 23 21 16 17 21]';
% 在每个重量上有不良mpg表现的汽车数量
[1 2 0 3 8 8 14 17 19 15 17 21]';

逻辑回归模型

逻辑回归(广义线性模型的一种特例)适合这些数据,因为因变量呈二项分布。逻辑回归模型可以写作:

其中 X 是设计矩阵,b 是包含模型参数的向量。我们可以将此方程写作:

 @(b,x) exp(b(1)+b(2).*x)./(1+exp(b(1)+b(2).*x));

如果您有一些先验知识或者已经具备某些非信息性先验,则可以指定模型参数的先验概率分布。例如,在此示例中,我们使用正态先验值表示截距 b1 和斜率 b2,即

@(b1) normpdf(b1,0,20); % 截距的先验。
@(b2) normpdf(b2,0,20); % 斜率的先验。

根据贝叶斯定理,模型参数的联合后验分布与似然和先验的乘积成正比。

请注意,此模型中后验的归一化常数很难进行分析。但是,即使不知道归一化常数,如果您知道模型参数的大致范围,也可以可视化后验分布。


msh(b2,b1,sipot)
view(-10,30)

此后验沿参数空间的对角线伸长,表明(在我们观察数据后)我们认为参数是相关的。这很有意思,因为在我们收集任何数据之前,我们假设它们是独立的。相关性来自我们的先验分布与似然函数的组合。

切片采样

蒙特卡罗方法常用于在贝叶斯数据分析中汇总后验分布。其想法是,即使您不能通过分析的方式计算后验分布,也可以从分布中生成随机样本,并使用这些随机值来估计后验分布或推断的统计量,如后验均值、中位数、标准差等。切片采样是一种算法,用于从具有任意密度函数的分布中进行抽样,已知项最多只有一个比例常数 - 而这正是从归一化常数未知的复杂后验分布中抽样所需要的。此算法不生成独立样本,而是生成马尔可夫序列,其平稳分布就是目标分布。因此,切片抽样器是一种马尔可夫链蒙特卡罗 (MCMC) 算法。但是,它与其他众所周知的 MCMC 算法不同,因为只需要指定缩放的后验,不需要建议分布或边缘分布。

此示例说明如何使用切片抽样器作为里程测试逻辑回归模型的贝叶斯分析的一部分,包括从模型参数的后验分布生成随机样本、分析抽样器的输出,以及对模型参数进行推断。第一步是生成随机样本。

 sliesmle(inial,nsapes,'pdf');

采样器输出分析

从切片采样获取随机样本后,很重要的一点是研究诸如收敛和混合之类的问题,以确定将样本视为是来自目标后验分布的一组随机实现是否合理。观察边缘轨迹图是检查输出的最简单方法。


plot(trace(:,1))

从这些图中可以明显看出,在处理过程趋于平稳之前,参数起始值的影响会维持一段时间(大约 50 个样本)才会消失。

检查收敛以使用移动窗口计算统计量(例如样本的均值、中位数或标准差)也很有帮助。这样可以产生比原始样本轨迹更平滑的图,并且更容易识别和理解任何非平稳性。

mvag = fier( (1/50)*os(50,1), 1, tace);
plot(moav(:,1))

由于这些是基于包含 50 次迭代的窗口计算的移动平均值,因此前 50 个值无法与图中的其他值进行比较。然而,每个图的其他值似乎证实参数后验均值在 100 次左右迭代后收敛至平稳分布。同样显而易见的是,这两个参数彼此相关,与之前的后验密度图一致。

由于磨合期代表目标分布中不能合理视为随机实现的样本,因此不建议使用切片采样器一开始输出的前 50 个左右的值。您可以简单地删除这些输出行,但也可以指定一个“预热”期。在已知合适的预热长度(可能来自先前的运行)时,这种方式很简便。

slcsapl(inial,nsmes,'pf',pot, ..'brin',50);
plot(trace(:,1))

这些跟踪图没有显示出任何不平稳,表明预热期已完成。

但是,还需要了解跟踪图的另一方面。虽然截距的轨迹看起来像高频噪声,但斜率的轨迹好像具有低频分量,表明相邻迭代的值之间存在自相关。虽然也可以从这个自相关样本计算均值,但我们通常会通过删除样本中的冗余数据这一简便的操作来降低存储要求。如果它同时消除了自相关,我们还可以将这些数据视为独立值样本。例如,您可以通过只保留第 10 个、第 20 个、第 30 个等值来稀释样本。

sceampe(...'brin'50,'tin',10);

要检查这种稀释的效果,可以根据轨迹估计样本自相关函数,并使用它们来检查样本是否快速混合。

 fftetendtrce,'cnsant');F .* coj(F);for i = 1:2lineles =  stem(:20, F(:i)  'filled' , 'o');

第一个滞后的自相关值对于截距参数很明显,对于斜率参数更是如此。我们可以使用更大的稀释参数重复抽样,以进一步降低相关性。但为了完成本示例的目的,我们将继续使用当前样本。

推断模型参数

与预期相符,样本直方图模拟了后验密度图。

hist(rce,[25,25]);view(-10,30)

您可以使用直方图或核平滑密度估计值来总结后验样本的边缘分布属性。


kdeiy(rae(:2))

您还可以计算描述性统计量,例如随机样本的后验均值或百分位数。为了确定样本大小是否足以实现所需的精度,将所需的轨迹统计量作为样本数的函数来进行查看会很有帮助。

csu= csm(rae);plot(csm(:,1)'./(1:sals))

在这种情况下,样本大小 1000 似乎足以为后验均值估计值提供良好的精度。

mean(te)

总结

您能够轻松地指定似然和先验。您也可以将它们结合起来用于推断后验分布。您可以通过马尔可夫链蒙特卡罗仿真在 MATLAB 中执行贝叶斯分析。


最受欢迎的见解

1.matlab使用贝叶斯优化的深度学习

2.matlab贝叶斯隐马尔可夫hmm模型实现

3.R语言Gibbs抽样的贝叶斯简单线性回归仿真

4.R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归

5.R语言中的Stan概率编程MCMC采样的贝叶斯模型

6.Python用PyMC3实现贝叶斯线性回归模型

7.R语言使用贝叶斯 层次模型进行空间数据分析

8.R语言随机搜索变量选择SSVS估计贝叶斯向量自回归(BVAR)模型

9.matlab贝叶斯隐马尔可夫hmm模型实现

拓端tecdat:matlab用Logistic逻辑回归建模和马尔可夫链蒙特卡罗MCMC方法分析汽车实验数据相关推荐

  1. 基于Octave/Matlab的二元逻辑回归(logistic regression)算法

    基于Octave/Matlab的二元逻辑回归(logistic regression)算法 本博文基于吴恩达老师的机器学习网课,是对作业代码进行简化和补充完整后的实现. 逻辑回归算法的基本思想 sig ...

  2. 多元有序logistic回归_R语言多元Logistic逻辑回归 应用案例

    原文链接: http://tecdat.cn/?p=2640 ​tecdat.cn 可以使用逐步过程确定多元逻辑回归.此函数选择模型以最小化AIC. 如何进行多元逻辑回归 可以使用阶梯函数通过逐步过程 ...

  3. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择分类心肌梗塞数据模型案例...

    全文下载链接:http://tecdat.cn/?p=21444 在本文中,逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给 ...

  4. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

    原文链接:http://tecdat.cn/?p=21444 逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给高维变量选择问 ...

  5. logistic逻辑回归公式推导及R语言实现

    Logistic逻辑回归 Logistic逻辑回归模型 线性回归模型简单,对于一些线性可分的场景还是简单易用的.Logistic逻辑回归也可以看成线性回归的变种,虽然名字带回归二字但实际上他主要用来二 ...

  6. 拓端tecdat荣获掘金社区入驻新人奖

    2021年7月,由掘金发起了"入驻成长礼"颁奖活动.本次活动邀请到知名开发者.服务机构代表等业界人士. 据了解,掘金社区"新入驻创作者礼"主要对已经积累了一定历 ...

  7. 在R语言中实现Logistic逻辑回归

    逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x).典型的使用这种模型是给定一组预测的X预测Ÿ.预测因子可以是连续的,分类的或两者的混合.最近我们被客户要求撰写关于Logistic逻辑回 ...

  8. 拓端tecdat荣获2022年度51CTO博主之星

    相信技术,传递价值,这是51CTO每一个技术创作者的动力与信念,2022 年度,拓端tecdat 作为新锐的数据分析咨询公司,在51CTO平台上,不断的输出优质的技术文章,分享前沿创新技术,输出最佳生 ...

  9. Logistic逻辑回归(sigmod二分类)成本函数推导 及其梯度下降

    logistic逻辑回归是比较常用的二分分类,其激活函数适用于各种二分类场景,但是其函数在t极大或者极小的时候趋于饱和会引发梯度消失,影响网络调参使得函数不能很好的收敛 有兴趣的同学可以参阅我的上一篇 ...

  10. r语言中残差与回归值的残差图_R语言逻辑回归、方差分析、伪R平方分析

    原标题:R语言逻辑回归.方差分析.伪R平方分析 原文链接:http://tecdat.cn/?p=9589 目录 怎么做测试 假设条件 并非所有比例或计数都适用于逻辑回归分析 过度分散 伪R平方 测试 ...

最新文章

  1. 是否是一个新的机会?
  2. java配置mongo最大连接数
  3. BPMS表单版本控制设计
  4. win10 家庭版 CredSSP加密Oracle修正 设置方法
  5. 当前联机日志损坏恢复
  6. Python——Youki觉得好用的Object父类的属性方法
  7. java之xml编程
  8. 如何编写产品说明文档?
  9. The server returned the following error: 无法与服务器建立连接(0x80072EFD)
  10. 双击jar包无法运行
  11. 叮咚,ps术语请查收~
  12. matexs不支持鸿蒙,华为mateXs为何从兼容安卓改成基于安卓,是鸿蒙不行还是另有隐情...
  13. h5自动播放视频且有声音的办法
  14. 用统信uos安装docker并运行项目
  15. python绘制气象等值线图_气象要素场等值线图自动绘制
  16. 魅族15系统是android,魅族工程师回复Flyme 8没有升级底层,魅族15还是安卓7.1
  17. 深度强化学习系列(1): 深度强化学习概述
  18. 按enter键,快速切换到下一个输入框进行输入
  19. 同个网络找不到计算机打印机共享,我已经在一台电脑上设置了打印机共享,为什么另一台电脑输入打印机电脑的IP显示找不到文件...
  20. 计算机电子电路基础教程视频,电子电路基础详细视频教学(100集)

热门文章

  1. Android定位地图导航——基于百度地图,实现自定义图标绘制并点击时弹出泡泡...
  2. LINUX异步信号集合示例代码
  3. 【转】请不要做浮躁的人。
  4. OS 中的SID(安全标识)
  5. 1月3日 接触ROS
  6. CTR 预估模型简介--深度学习篇
  7. 数据--第35课 - 创建二叉树
  8. 关于boostrap的modal隐藏问题(前端框架)
  9. 如何删除gmail快捷链接?
  10. php 当前时间 当前时间戳和数据库里取出的时间datetime格式进行比较大小