如何在Python中实现这五类强大的概率分布
R编程语言已经成为统计分析中的事实标准。但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易。我要使用Python实现一些离散和连续的概率分布。虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料。在讨论这些概率分布之前,我想简单说说什么是随机变量(random variable)。随机变量是对一次试验结果的量化。
举个例子,一个表示抛硬币结果的随机变量可以表示成
Python
1
2
X = {1 如果正面朝上,
2 如果反面朝上}
随机变量是一个变量,它取值于一组可能的值(离散或连续的),并服从某种随机性。随机变量的每个可能取值的都与一个概率相关联。随机变量的所有可能取值和与之相关联的概率就被称为概率分布(probability distributrion)。
我鼓励大家仔细研究一下scipy.stats模块。
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。
离散概率分布也称为概率质量函数(probability mass function)。离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等。
连续概率分布也称为概率密度函数(probability density function),它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normal distribution)、指数分布(exponential distribution)和β分布(beta distribution)等都属于连续概率分布。
若想了解更多关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的视频。
R编程语言已经成为统计分析中的事实标准。但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易。我要使用Python实现一些离散和连续的概率分布。虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料。在讨论这些概率分布之前,我想简单说说什么是随机变量(random variable)。随机变量是对一次试验结果的量化。
举个例子,一个表示抛硬币结果的随机变量可以表示成
Python
1
2
X = {1 如果正面朝上,
2 如果反面朝上}
随机变量是一个变量,它取值于一组可能的值(离散或连续的),并服从某种随机性。随机变量的每个可能取值的都与一个概率相关联。随机变量的所有可能取值和与之相关联的概率就被称为概率分布(probability distributrion)。
我鼓励大家仔细研究一下scipy.stats模块。
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。
离散概率分布也称为概率质量函数(probability mass function)。离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等。
连续概率分布也称为概率密度函数(probability density function),它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normal distribution)、指数分布(exponential distribution)和β分布(beta distribution)等都属于连续概率分布。
若想了解更多关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的视频。
二项分布(Binomial Distribution)
服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p。
E(X) = np, Var(X) = np(1−p)
如果你想知道每个函数的原理,你可以在IPython笔记本中使用help file命令。 E(X)表示分布的期望或平均值。
键入stats.binom?了解二项分布函数binom的更多信息。
二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?
假设在该试验中正面朝上的概率为0.3,这意味着平均来说,我们可以期待有3次是硬币正面朝上的。我定义掷硬币的所有可能结果为k = np.arange(0,11):你可能观测到0次正面朝上、1次正面朝上,一直到10次正面朝上。我使用stats.binom.pmf计算每次观测的概率质量函数。它返回一个含有11个元素的列表(list),这些元素表示与每个观测相关联的概率值。
您可以使用.rvs函数模拟一个二项随机变量,其中参数size指定你要进行模拟的次数。我让Python返回10000个参数为n和p的二项式随机变量。我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图。
泊松分布(Poisson Distribution)
一个服从泊松分布的随机变量X,表示在具有比率参数(rate parameter)λ的一段固定时间间隔内,事件发生的次数。参数λ告诉你该事件发生的比率。随机变量X的平均值和方差都是λ。
E(X) = λ, Var(X) = λ
泊松分布的例子:已知某路口发生事故的比率是每天2次,那么在此处一天内发生4次事故的概率是多少?
让我们考虑这个平均每天发生2起事故的例子。泊松分布的实现和二项分布有些类似,在泊松分布中我们需要指定比率参数。泊松分布的输出是一个数列,包含了发生0次、1次、2次,直到10次事故的概率。我用结果生成了以下图片。
你可以看到,事故次数的峰值在均值附近。平均来说,你可以预计事件发生的次数为λ。尝试不同的λ和n的值,然后看看分布的形状是怎么变化的。
现在我来模拟1000个服从泊松分布的随机变量。
正态分布(Normal Distribution)
正态分布是一种连续分布,其函数可以在实线上的任何地方取值。正态分布由两个参数描述:分布的平均值μ和方差σ2 。
E(X) = μ, Var(X) = σ2
正态分布的取值可以从负无穷到正无穷。你可以注意到,我用stats.norm.pdf得到正态分布的概率密度函数。
β分布(Beta Distribution)
β分布是一个取值在 [0, 1] 之间的连续分布,它由两个形态参数α和β的取值所刻画。
β分布的形状取决于α和β的值。贝叶斯分析中大量使用了β分布。
当你将参数α和β都设置为1时,该分布又被称为均匀分布(uniform distribution)。尝试不同的α和β取值,看看分布的形状是如何变化的。
指数分布(Exponential Distribution)
指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔。比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等。
我将参数λ设置为0.5,并将x的取值范围设置为 $[0, 15]$ 。
接着,我在指数分布下模拟1000个随机变量。scale参数表示λ的倒数。函数np.std中,参数ddof等于标准偏差除以 $n-1$ 的值。
结语(Conclusion)
概率分布就像盖房子的蓝图,而随机变量是对试验事件的总结。我建议你去看看哈佛大学数据科学课程的讲座,Joe Blitzstein教授给了一份摘要,包含了你所需要了解的关于统计模型和分布的全部。
R编程语言已经成为统计分析中的事实标准。但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易。我要使用Python实现一些离散和
连续的概率分布。虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这些统计学概念的好资料。在讨论这些概率分布之前,我想简单说说什么
是 随机变量(random variable) 。随机变量是对一次试验结果的量化。
举个例子,一个表示抛硬币结果的随机变量可以表示成
X = {1 如果正面朝上,
2 如果反面朝上}
随机变量是一个变量,它取值于一组可能的值( 离散 或 连续 的),并服从某种 随机性 。随机变量的每个可能取值的都与一个概率相关联。随机变量的所有可能取值和与之相关联的概率就被称为 概率分布(probability distributrion) 。
我鼓励大家仔细研究一下 scipy.stats 模块。
概率分布有两种类型:离散(discrete)概率分布和连续(continuous)概率分布。
离散概率分布也称为 概率质量函数(probability mass function) 。离散概率分布的例子有伯努利分布(Bernoulli distribution)、二项分布(binomial distribution)、泊松分布(Poisson distribution)和几何分布(geometric distribution)等。
连续概率分布也称为 概率密度函数(probability density function) ,它们是具有连续取值(例如一条实线上的值)的函数。正态分布(normal distribution)、指数分布(exponential distribution)和β分布(beta distribution)等都属于连续概率分布。
若想了解更多关于离散和连续随机变量的知识,你可以观看可汗学院关于概率分布的 视频 。
二项分布(Binomial Distribution)
服从二项分布的随机变量X表示在n个独立的是/非试验中成功的次数,其中每次试验的成功概率为p。
E(X) = np, Var(X) = np(1−p)
如果你想知道每个函数的原理,你可以在IPython笔记本中使用 help file 命令。 E(X)表示分布的期望或平均值。
键入 stats.binom? 了解二项分布函数 binom 的更多信息。
二项分布的例子:抛掷10次硬币,恰好两次正面朝上的概率是多少?
假设在该试验中正面朝上的概率为0.3,这意味着平均来说,我们可以期待有3次是硬币正面朝上的。我定义掷硬币的所有可能结果为 k = np.arange(0,11) :你可能观测到0次正面朝上、1次正面朝上,一直到10次正面朝上。我使用 stats.binom.pmf 计算每次观测的概率质量函数。它返回一个含有11个元素的列表(list),这些元素表示与每个观测相关联的概率值。
您可以使用 .rvs 函数模拟一个二项随机变量,其中参数 size 指定你要进行模拟的次数。我让Python返回10000个参数为n和p的二项式随机变量。我将输出这些随机变量的平均值和标准差,然后画出所有的随机变量的直方图。
泊松分布(Poisson Distribution)
一个服从 泊松分布 的随机变量X,表示在具有比率参数(rate parameter)λ的一段固定时间间隔内,事件发生的次数。参数λ告诉你该事件发生的比率。随机变量X的平均值和方差都是λ。
E(X) = λ, Var(X) = λ
泊松分布的例子:已知某路口发生事故的比率是每天2次,那么在此处一天内发生4次事故的概率是多少?
让我们考虑这个平均每天发生2起事故的例子。泊松分布的实现和二项分布有些类似,在泊松分布中我们需要指定比率参数。泊松分布的输出是一个数列,包含了发生0次、1次、2次,直到10次事故的概率。我用结果生成了以下图片。
你可以看到,事故次数的峰值在均值附近。平均来说,你可以预计事件发生的次数为λ。尝试不同的λ和n的值,然后看看分布的形状是怎么变化的。
现在我来模拟1000个服从泊松分布的随机变量。
正态分布(Normal Distribution)
正态分布 是一种连续分布,其函数可以在实线上的任何地方取值。正态分布由两个参数描述:分布的平均值μ和方差σ2 。
E(X) = μ, Var(X) = σ2
正态分布的取值可以从负无穷到正无穷。你可以注意到,我用 stats.norm.pdf 得到正态分布的概率密度函数。
β分布(Beta Distribution)
β分布是一个取值在 [0, 1] 之间的连续分布,它由两个形态参数α和β的取值所刻画。
β分布的形状取决于α和β的值。贝叶斯分析中大量使用了β分布。
当你将参数α和β都设置为1时,该分布又被称为均匀分布(uniform distribution)。尝试不同的α和β取值,看看分布的形状是如何变化的。
指数分布(Exponential Distribution)
指数分布是一种连续概率分布,用于表示独立随机事件发生的时间间隔。比如旅客进入机场的时间间隔、打进客服中心电话的时间间隔、中文维基百科新条目出现的时间间隔等等。
我将参数λ设置为0.5,并将x的取值范围设置为 $[0, 15]$ 。
接着,我在指数分布下模拟1000个随机变量。 scale 参数表示λ的倒数。函数 np.std 中,参数 ddof 等于标准偏差除以 $n-1$ 的值。
Ruby,Perl,Python,Lua等语言相互之间都有哪些异同点
本文从RoR对Ruby的影响、Ruby的优势等多个角度分析了Ruby比Python成功的原因。伴随着RoR的风行,Ruby语言受到越来越多的开发者的关注,同为脚本语言,Python的地位却略显尴尬,什么样的原因,造成了这样的局面?笔者认为有以下几个方面:一、RoR的推波助澜笔者认为,Ruby的成功,很大一部分是由于RoR的带动...
听校长亲自介绍Christ Church Cathedral School的魅力何在
当我们步入校园,古老的建筑风格与历任校长的名簿让人感受到学校477年的悠久历史。校长Mr Richard Murray亲自迎接我们,他的办公室里,不仅堆满了孩子们的作业和教学资料,更凝聚着学校的历史与未来。在参观过程中,我们深入了解到,CCCS的课程设置丰富多样,如Python编程、法语学习,以及拉丁语的系统教学。
PostgreSQL 与 MySQL 相比,优势何在?
在前端开发环境中,PostgreSQL 通过 PostgREST 快速生成后端 API,结合其强大的性能,为开发者提供了便捷的解决方案:[PostgREST](https:\/\/github.com\/begriffs\/postgrest)8. 丰富的扩展支持 PostgreSQL 支持服务器端脚本,包括 TCL、Python、R、Perl、Ruby、MRuby 等,内置了 MapReduce 功能。此外,...
...什么水平?服务器如何渗透?学习shell好还是python好呢
现在的小弟,动不动就说精通,唉,别怪我吐槽...不过整体就业形式如此,某些不怎么懂技术的人在刷简历,所以,可以原谅。逆向,攻防,渗透,很多年青人觉得很神奇的字眼...其实,最重要的是基础。摘录以前一篇小文的一段:武功篇:编程语言是外功,比如shell, c, c++, java等,这是编程的基本招式...
学习统计学都要掌握哪些知识点?
我是厦门大学一名大二的学生,在修WISE(厦门大学王亚南经济学院)的统计双学位,希望我的回答能帮助到你。与其说学统计需要学习哪些知识点,不如说说统计在本科阶段主要涵盖了哪些课程吧。必须要说明的是,此处谈论的是统计(经济)而非统计(数学)。前者与经济金融的关系更加紧密,是放在经济学院的,...
...来保存登录状态,用 token based 验证 用意何在?
基于标准: 你的API能接受一个标准的 JSON Web Token (JWT). 这个标准后面有多个库包(.NET, Ruby, Java, Python, PHP),许多公司支持(e.g. Firebase, Google, Microsoft). ,比如Firebase允许他们的客户使用任何身份验证机制,只要你使用预先定义的属性生成一个 JWT,并使用共享密钥签署,就能调用...
怎样读书比较快
再比如,PYTHON初学者可能对结束没有";"还没有多大意见,缩进是语法的一部分,很多人好几年适应不过来。所有这些,lisp,python,康德罗素,他们让我们不舒服,让我们阅读的速度大大降低,原因在于--他们正拓展我们的知识结构。探索新宇宙,开疆拓土,历来如此。大部分小学生看你现在要考试的教材,速度...
安利你最喜欢的三个app?
今天安利三个我最喜欢的app,每一个都是精挑细选出来的,每一个都很实用,快来看看吧~顺便测测你手机里有没有这些app呢!NO1. 美图秀秀 滤镜之下,全是美女 和美图秀秀最相关的是美颜相机,为什么我更喜欢美图秀秀呢?作为一个现代人,作为一位新时代女性,谁的手机里没有一个美颜相机呢?谁的...
韦儿卵磷: R编程语言已经成为统计分析中的事实标准.但在这篇文章中,我将告诉你在Python中实现统计学概念会是如此容易.我要使用Python实现一些离散和连续的概率分布.虽然我不会讨论这些分布的数学细节,但我会以链接的方式给你一些学习这...
蜀山区17831737722: 如何用python实现 echart - ?
韦儿卵磷: python安装echarts-python模块
蜀山区17831737722: 如何成为 Python 高手 - ?
韦儿卵磷: 一、Python之禅(The Zen of Python) The Zen of Python是Python语言的指导原则,遵循这些基本原则,你就可以像个Pythonista一样编程.具体内容你可以在Python命令行输入import this看到: The Zen of Python, by Tim Peters Beautiful is ...
蜀山区17831737722: 在做测试自动化时,python数据类型转换函数有几种? - ?
韦儿卵磷: 在python中的数据类型转换函数共有五类:1.float(x) 将x转换为一个浮点数,x如果是一个字符串, 必须是数字类型的字符串2.int(x) 将x转换为一个整数, x如果是一个字符串,必须是数字类型的字符串3.str(x) 把x转换为字符串类型, 任意数据类型都可以转换为字符串4.list(x) 把序列数据x转为列表(注意:字典没有顺序,不是序列数据)5.tuple(x) 把序列数据x转为元组(字典没有顺序,不是序列数据) 你可以多去黑马程序员视频库看看,里面这样的知识点特别多
蜀山区17831737722: python数据结构如何实 - ?
韦儿卵磷: Python中有许多数据结构是预先实现了的,这是它比C语言更强的地方.Python中已经实现了一些基本的数据结构:1. 数,包括int、long、float等2. 字符串3. 数组,高级数组4. 哈希数据结构,包括字典dict和集合set Python中的一些标准库也有队列、栈、堆之类的数据结构.如果您想要亲手实现这些数据结构,不妨去看一看C语言是如何编写出Python语言这些新功能的(查看Python的实现源代码),或者去维基百科、百度百科,您可以在那里找到更多有用的信息.
蜀山区17831737722: 参加Python培训后可以胜任哪些岗位 - ?
韦儿卵磷: Python是可以适用于多种用途的编程语言,以下是常见的五大Python就业方向: 1、Linux运维.Python可以帮助Linux运维工程师快速实现独立开发一个完整的自动化系统,提升工作效率. 2、Python自动化测试.用Python实现的测试工具及过...
蜀山区17831737722: python中,执行命令的方法有哪些? - ?
韦儿卵磷: 1. os.system() 这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息. 2. os.popen() 这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回. 3. commands模块 ...
蜀山区17831737722: 如何利用python进行数据分析 - ?
韦儿卵磷: 1、为什么用Python做数据分析 首先因为Python可以轻松地集成C、C++、Fortran代码,一些底层用C写的算法封装在python包里后性能非常高效.并且Python与Ruby都有大量的Web框架,因此用于网站的建设,另一方面个人觉得因为Python作...
蜀山区17831737722: Python,PHP,Java开发技术三者之间的区别是? - ?
韦儿卵磷: Python Python由于具有丰富和强大的库,它又叫做作胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起.常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有...
蜀山区17831737722: 开发Python用哪些工具好 - ?
韦儿卵磷: 刚学python时,面对简陋的官方版idle和一大堆开发平台和发行版,不知道究竟如何下手.在进行多方尝试后,我最后的选择是Anaconda + Pycharm,用anaconda集成的ipython做工作台,做一些分析和小段程序调试的工作,用Pycharm写相应...