统计学关我什么事?

林骥

共 3556字,需浏览 8分钟

 ·

2021-01-06 20:26

你好,我是林骥。

最近,我正在读《统计学关我什么事》这本书,副标题是:生活中的极简统计学,作者小岛宽之,是日本的经济学博士,知名的数学随笔作家。
这是一本关于「贝叶斯统计学」的超级入门书,其中没有复杂的公式,作者运用简单的「面积图」和四则运算,就把复杂的统计学理论,讲得简单、生动、有趣,我认为值得学习。
1. 一个例子
书中举了一个很有趣的例子,假如有位女同事给你送了一盒巧克力,你推测她把你当成「真命天子」的概率有多大?
根据贝叶斯推理的方法,只需要简单的 3 步,就能算出这个概率。
第 1 步
先假设女同事把你当成「真命天子」的概率为10%,这个概率可以根据自己的主观感受进行修改;
第 2 步
通过调查统计知道,职场女性对「真命天子」送出巧克力的平均概率为42.5%,对「无关路人」送出巧克力的平均概率为22%;
第 3 步
根据女同事送巧克力的行为,计算她把你当成「真命天子」的概率 = 10%*42.5% / (10%*42.5% + 90%*22%) = 17.67%
也就是说,当你认为女同事对你有意思的可能性比较低时,即使她送了巧克力给你,也只是增加了她对你有意思的概率,但并不能因此说明她对你真的有意思。
2. 矩阵树图
为了直观地展现上述推理过程的概率分布情况,我用 pyecharts 制作了一张矩阵树图:
# 导入库from pyecharts import options as optsfrom pyecharts.charts import TreeMapfrom pyecharts.globals import ThemeType
# 真命天子的概率a = 0.1# 无关路人的概率b = 1 - a# 送给真命天子的概率c = 0.425# 不送真命天子的概率d = 1 - c# 送给无关路人的概率e = 0.22# 不送无关路人的概率f = 1 - e
# 定义数据data = [ { "value": 100, "name": "后验概率", "children": [ { "value": 100, "name": "送巧克力", "children": [ {"value": round(a*c/(a*c+b*e)*100,2), "name": "送给真命天子"}, {"value": round(b*e/(a*c+b*e)*100,2), "name": "送给无关路人"}, ], } ], }, { "value": 100, "name": "先验概率", "children": [ { "value": 100, "name": "条件概率", "children": [ {"value": round(a*c*100,2), "name": "送给真命天子"}, {"value": round(a*d*100,2), "name": "不送真命天子"}, {"value": round(b*e*100,2), "name": "送给无关路人"}, {"value": round(b*f*100,2), "name": "不送无关路人"}, ], } ], },]
# 绘制矩形树图c = ( TreeMap(init_opts=opts.InitOpts(width='800px', height='800px', theme=ThemeType.LIGHT)) .add("推测送巧克力的女同事的心意", data, levels=[ opts.TreeMapLevelsOpts( treemap_itemstyle_opts=opts.TreeMapItemStyleOpts( border_color="#00589F", border_width=4, gap_width=4 ) ), opts.TreeMapLevelsOpts( color_saturation=[0.3, 0.5], treemap_itemstyle_opts=opts.TreeMapItemStyleOpts( border_color_saturation=0.7, gap_width=2, border_width=2 ), ), opts.TreeMapLevelsOpts( color_saturation=[0.3, 0.5], treemap_itemstyle_opts=opts.TreeMapItemStyleOpts( border_color_saturation=0.6, gap_width=1 ), ), opts.TreeMapLevelsOpts(color_saturation=[0.3, 0.5]), ], ) .set_global_opts(title_opts=opts.TitleOpts( title="推测送巧克力的女同事的心意,她把你当成真命天子的概率是"+'%.2f%%' % (a*c/(a*c+b*e)*100), pos_left="center", pos_top="30", )) .render("推测送巧克力的女同事的心意.html"))
运行结束之后,用浏览器打开新生成的 HTML 文件,就能看到一个矩阵树图。
你可以自己修改代码中的概率数据,运行得到不同的计算结果,甚至可以做成动态变化的图,动态展现概率的变动。
你也可以把上面制作矩阵树图的方法,应用到其他的工作场景,比如说,替换掉那些分类比较多的饼图。
3. 小结
贝叶斯推理的魅力和优势在于,即使没有事前的客观数据,也能根据主观判断进行推算。
而且在数据比较少的情况下,也可以应用贝叶斯推理,当数据越多,推测的结果就越准确。
把有用的知识,与有趣的场景相结合,这是我个人比较喜欢的一种学习方法,我曾经写过一篇文章:如何用人工智能算出美不美,从生活中的一段对话开始,引出了使用「K-近邻算法」实现分类预测的代码,并给出了图形化的运行结果。
知识的分享,最好能既有用又有趣,这样效果更好,而且让人更容易坚持下去。
随着因特网技术的的发展,贝叶斯统计在商业领域得到了成功的应用。
比尔·盖茨曾经说过:
微软之所以在激烈的市场竞争中胜出,正是由于采用了贝叶斯统计。
世界上有很多著名的投资人,包括巴菲特在内,都在运用「贝叶斯统计」的方法。
我认为运用贝叶斯统计的核心理念,就是持续去做大概率正确的事情,日积月累,成功的概率就会越来越大。

我的 2020 年终总结


长按下方的二维码,关注林骥的公众号,更多干货早知道。
欢迎加入我的免费知识星球,点击左下角的阅读原文即可加入。
如果你觉得文章对你有帮助或启发,麻烦你动动手指支持鼓励一下,分享、收藏、点赞、在看,谢谢!

☟分享 ☟收藏    ?    点赞 ☟在看

浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报