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

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

我想研究如何使用pymc3在贝叶斯框架内进行线性回归。根据从数据中学到的知识进行推断。

贝叶斯规则是什么?

本质上,我们必须将已经知道的知识与世界上的事实相结合。

这里有一个例子。

假设存在这种罕见疾病,每10,000人中就有1人随机感染这种疾病。换句话说,有0.01%的机会患上这种疾病。 幸运的是,有一项测试可以99%的正确识别出患有这种疾病的人,如果没有这种疾病,它也可以正确地说出您99%没有患这种疾病。您参加了测试,结果为阳性。您有多少几率实际患上该病?

好吧,让我们从逻辑上考虑一下。我们知道,每10,000人中就有1人患此病。假设有10,000人。他们中的9,999人没有疾病,但其中1%的人会得到阳性结果。因此,即使只有1人实际患有这种疾病,也有约101人获得了阳性结果。这意味着即使结果为阳性,您也只有101分的几率实际患上该病(或大约1%的几率)。

数学描述  :

看起来很简单。实际上,这很简单。该公式仅需要一些概率分布的知识。但是实际上,右边的分母通常意味着我们将要计算很多真正的计算重积分。因此,贝叶斯统计被放弃了很多年。从某种意义上讲,它自然而然地脱离了概率论。如果我们只有擅长计算大量数字的东西,那么这类问题就可以解决。

计算机确实非常快地进行计算贝叶斯回归。

代码

这是进行贝叶斯回归所需的知识。通常,我们想到这样的回归:

e是正态分布的误差。

因此,我们假设:

与先验:

因此,如果我们拥有X和Y的数据,则可以进行贝叶斯线性回归。

代码

我们要使用的数据集是《  住房调查: 2013年住房负担能力数据 》数据集。

我们感兴趣的是住房负担如何随着年龄而变化。AGE1包含户主的年龄。BURDEN是一个变量,它告诉我们住房费用相对于收入有多大。为简单起见,我们仅关注这两个变量。我们想知道的是,随着年龄的增长,住房负担会变得更容易吗?特别是,我们想知道斜率系数是否为负,并且由于我们处于贝叶斯框架中,因此该概率为负的概率是多少?

因此,我们将导入所需的库和数据。进行一些数据清理。


df=pd.read_csv('2013n.txt',sep=',')
df=df[df['BURDEN']>0]
df=df[df['AGE1']>0]

现在,让我们构建上面讨论的模型。让我们做一个散点图,看看数据是什么样子。

plt.scatter(df['AGE1'],df['BURDEN'])
plt.show()

结果如下:

住房负担很容易超过收入的10倍。

这是构建和运行模型的代码:


pm.traceplot(trace)
plt.show()

看起来与我们上面的模型完全一样,不同之处在于我们还有一个正态分布的截距beta。现在我们的模型已经训练好了,我们可以继续做一些推论工作。

完成运行后,会看到类似以下内容:

可以看到,我们有斜率和截距的后验分布以及回归的标准偏差。

住房负担会随着年龄的增长而减少吗?

是的。随着人们的建立,他们的住房成本将相对于收入下降。这将等于年龄变量的负斜率系数。运行以下代码,则可以找出斜率系数为负的确切概率。

print(np.mean([1 if obj<0 else 0 for obj in trace['x']]))

该系数为负的概率约为13.8%。

拓端tecdat|Python贝叶斯回归分析住房负担能力数据集相关推荐

  1. 【译文】利用STAN做贝叶斯回归分析:Part 1 正态回归

    [译文]利用STAN做贝叶斯回归分析:Part 1 正态回归 作者 Lionel Hertzog 本文将介绍如何在R中做贝叶斯回归分析,你能在文末的参考文献中找到相关主题的更多信息. 贝叶斯回归 贝叶 ...

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

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

  3. 基于Python贝叶斯优化XGBoost算法调参报错“TypeError: ‘float‘ object is not subscriptable”

    基于Python贝叶斯优化XGBoost算法调参运行情况如下: iter target colsam- gamma max_depth min_ch- subsample 1 0.9398 0.804 ...

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

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

  5. python贝叶斯模型_【机器学习速成宝典】模型篇05朴素贝叶斯【Naive Bayes】(Python版)...

    目录 先验概率与后验概率 条件概率公式.全概率公式.贝叶斯公式 什么是朴素贝叶斯(Naive Bayes) 拉普拉斯平滑(Laplace Smoothing) 应用:遇到连续变量怎么办?(多项式分布, ...

  6. PYTHON贝叶斯推断计算:用BETA先验分布推断概率和可视化案例

    最近我们被客户要求撰写关于贝叶斯推断的研究报告,包括一些图形和统计输出. 视频:线性回归中的贝叶斯推断与R语言预测工人工资数据案例 贝叶斯推断线性回归与R语言预测工人工资数据 ,时长09:58 在这篇 ...

  7. python贝叶斯优化算法_自动调参——贝叶斯优化算法hyperopt

    注:转载请注明出处. 本篇文章主要记录了贝叶斯优化算法hyperopt的学习笔记,如果想看自动化调参中的网格调参和遗传优化算法TPOT,请查看我另外两篇文章:网格搜索gridSearchCV和遗传优化 ...

  8. python贝叶斯优化算法_【干货】手把手教你Python实现自动贝叶斯调整超参数

    [导读]机器学习中,调参是一项繁琐但至关重要的任务,因为它很大程度上影响了算法的性能.手动调参十分耗时,网格和随机搜索不需要人力,但需要很长的运行时间.因此,诞生了许多自动调整超参数的方法.贝叶斯优化 ...

  9. Python 贝叶斯算法

    Python 贝叶斯分类 博文类型: 学习向 背景: 本科阶段参见数学建模比赛,运用该技术与KNN算法作比较,从而得出最优算法 目标: 了解贝叶斯的原理并且能够进行简单的运用 目录 Python 贝叶 ...

  10. python 贝叶斯分类器sklearn_Sklearn 中的朴素贝叶斯分类器

    原标题:Sklearn 中的朴素贝叶斯分类器 作者:Martin Müller,翻译:github-sisibeloved https://github.com/xitu/gold-miner/blo ...

最新文章

  1. VC++ VS2010 error LNK1123 转换到 COFF 期间失败 怎么办
  2. flash开发中如何实现界面代码分离
  3. WaitForMultipleObject与MsgWaitForMultipleObjects用法
  4. gitlab 删除分支_如何删除gitlab上默认受保护的master主分支
  5. 生活 list.php,list.php
  6. ARM汇编指令(ARM工作模式、寄存器)
  7. linux 写地址 hex,你怎么理解Hex文件? (扩展地址记录)
  8. PrepareStatement对象(新增、删除、更新、查询、防止SQL注入)
  9. docker export/import到docker容器迁移的思考
  10. 浅析 Linux 初始化 init 系统(3) Systemd
  11. atitit.基于  Commons CLI 的命令行原理与 开发
  12. 图论及其应用 2013年期末考试 答案总结
  13. 蛙跳算法优化VMD参数,惩罚系数,分解层数,matlab语言 ,最小包络熵为适应度函数。
  14. MT6577供放问题
  15. Laravel 生成QRCODE
  16. [题解]LuoGu4315:月下“毛景树”
  17. JAVA面试大全(持续更新中...)
  18. 记录阿里云服务器和百度网盘之间传输文件
  19. 剑指 Offer 12-20
  20. python二级证书含金量排名_计算机二级证书含金量有多高?你真的知道吗?

热门文章

  1. Java阻塞IO与非阻塞IO
  2. 网络基础---网络层
  3. xFire入门(eclipse、tomcat环境)
  4. 另类方法激活你的Winodws 2008
  5. 3月19日 视觉里程计,PnP方法对两帧求解,BA优化的直观理解
  6. 基于 Google 搜索的半自动推荐
  7. [Liferay6.2]Liferay Dynamic Query API示例
  8. char *转为pansichar
  9. 初识 Node.js
  10. Redis安装及Java客户端的使用浅析(jedis)