基于python/scipy学习概率统计(2):伯努利分布(Bernoulli Distribution)

article/2025/9/18 4:24:17

目录

1. 概念

2. 概率分布

2.1 概率质量函数

2.2 概率分布函数

2.3 生存函数,风险函数

2.4 百分点函数

3. 常用统计特征

3.1 均值,Mean

3.2 中位数,Median

3.3 众数,Mode

3.4 方差,Variance

3.5 偏度,Skewness

3.6 峰度,Kurtosis

4. 代码示例


1. 概念

        设试验E只有两种可能的结果,这种试验称为伯努利试验。伯努利试验的结果为一个随机变量,它遵循伯努利分布。

        伯努利分布也称为(0-1)分布,遵循伯努利分布的随机变量只有两种取值,分别用0和1表示(分别对应试验的两种结果)。典型的例子是扔硬币实验结果。将扔硬币的实验结果(正面向上或向下)看作是一个随机变量X,则X遵循伯努利分布,这是一种离散分布。记为:

X \sim Bern(p)

X\sim B(p)

        其中通常p表示X取值为1的概率。

2. 概率分布

2.1 概率质量函数

        PMF: Probability Mass Function

        有些书也写作分布律(如浙大版<<概率论与数理统计>>),与连续随机变量的PDF(Probability Density Function: 概率密度函数)相对应)。

        伯努利分布的概率质量函数为:

P(X=1|p) = p \\ P(X=0|p) = 1-p

        当然,为了和条件概率区分开来,也有将 写成 的写法。一般情况下根据上下文也可以做出区分。 

        也可以进一步简记(未必简单,但是对于要做数学推导处理等就比较方便)为:

        其中I(x)是所谓的Indicator函数。因此,以上式表示仅在x=0或x=1时成立,其它情况下则为0.

2.2 概率分布函数

        伯努利分布的概率分布函数(CDF: Cumulative Distribution Function,累积分布函数。不管对于离散随机变量还是连续随机变量,CDF总是一个连续函数。只不过对于离散随机变量而言,CDF是一个分段函数:piecewise function)如下所示:

2.3 生存函数,风险函数

        生存函数是概率分布函数的互补函数,定义为: S(x)=F(1-x) 。伯努利分布的生存函数为:

        与生存函数相关联风险函数定义为:

        注意,风险函数仅在S(x)的非零区间(In other words, only valid on S support)有定义。伯努利分布的风险函数为: 

        伯努利分布的累计风险函数为:

        

   (???待确认) 

2.4 百分点函数

        PPF: Percent Point Function. 也称百分位数(percentile)?

        百分点函数PPF是CDF的反函数,它回答了“为了得到一定的累积分布概率,CDF相应的输入值是什么”的问题。伯努利分布的百分点函数为:

3. 常用统计特征

3.1 均值,Mean

\mu = E(X) = p

3.2 中位数,Median

3.3 众数,Mode

3.4 方差,Variance

V(X)=\sigma^2 = p(1-p)

3.5 偏度,Skewness

3.6 峰度,Kurtosis

4. 代码示例

        首先,导入必要的库。

import random
import numpy as np
from scipy.stats import bernoulli
%matplotlib inline
from matplotlib import pyplot as plt

        看看p=0.4条件下的PMF函数 :

fig, ax = plt.subplots(1, 1)
p  = 0.4
x = np.arange(-1,3)
ax.plot(x, bernoulli.pmf(x, p), 'bo', ms=8, label='bernoulli pmf')
ax.vlines(x, 0, bernoulli.pmf(x, p), colors='b', lw=5, alpha=0.5)#rv = bernoulli(p)
#ax.vlines(x, 0, rv.pmf(x), colors='k', linestyles='-', lw=1, label='frozen pmf')
ax.legend(loc='best', frameon=False)
ax.grid()
plt.show()

        x=0时概率等于0.6, x=1时等于0.4,符合预期。 

         看看CDF与PPF的关系(它们是互逆的关系):

cdf_prob = bernoulli.cdf(x, p)
print('cdf_prob[{0}] = {1}'.format(x,cdf_prob))
print('ppf[{0}] = {1}'.format(cdf_prob,bernoulli.ppf(cdf_prob, p)))

 Output:

        cdf_prob[[-1  0  1  2]] = [0.  0.6 1.  1. ]ppf[[0.  0.6 1.  1. ]] = [-1.  0.  1.  1.]

         注意存在在不满足可逆条件的区间。cdf(2) = 1, 而ppf(1) = 1。这是可以理解的。因为对于在x>=1的区间,cdf的定义域到值域不是一一映射,因此不可逆。所以ppf(cdf(x))不一定等于x。

        4种常用的统计特征:

p=0.5
mean, var, skew, kurt = bernoulli.stats(p, moments='mvsk')
print('Bernoulli distribution with p ={}'.format(p))
print('mean = {0}, var = {1}, skew = {2}, kurt = {3}'.format(mean, var, skew, kurt))p=0.4
mean, var, skew, kurt = bernoulli.stats(p, moments='mvsk')
print('Bernoulli distribution with p ={}'.format(p))
print('mean = {0}, var = {1}, skew = {2}, kurt = {3}'.format(mean, var, skew, kurt))

        当p=0.5时,说明0和1是等概率的,因此是一个对称的分布,因此3阶中心矩(对应Skewness)变为0。p!=0.5时,分布变为非对称的了,skewness变为非0就显示了分布非对称性。 

        来看看实际采样实验,即基于scipy.stats提供的函数进行随机数采样,然后看看它的统计特征是否符合预期。

r = bernoulli.rvs(p, size=10000)
_ = plt.hist(r, bins='auto', density=True)  # arguments are passed to np.histogram
plt.title("Histogram with 'auto' bins")
plt.grid()
plt.show()print('sample means of r = {0}'.format(np.mean(r)))
print('sample variance of r = {0}'.format(np.var(r)))

        mean和variance是符合预期的。 

        但是直方图上(虽然已经选择了是density=True),所显示的两个离散点的值的和并不为1。这个是numpy的histogram()函数(plt.hist()是调用numpy的histogram())的行为所致,查阅numpy.histogram()的手册有如下说明:

        histogram() parameter: densitybool, optional If False, the result will contain the number of samples in each bin. If True, the result is the value of the probability density function at the bin, normalized such that the integral over the range is 1. Note that the sum of the histogram values will not be equal to 1 unless bins of unity width are chosen; it is not a probability mass function.

        但是这个毕竟不甚方便,需要琢磨一下如何让直方图能够进行归一化计算和显示。

        上一篇:面向机器学习的概率统计:均匀分布(Uniform Distribution)https://blog.csdn.net/chenxy_bwave/article/details/120725136https://blog.csdn.net/chenxy_bwave/article/details/120725136 

        

        本系列计划目录:

        (1) 均匀分布:     https://blog.csdn.net/chenxy_bwave/article/details/120725136

        (2) 伯努利分布:  https://blog.csdn.net/chenxy_bwave/article/details/120847774

        (3) 正态分布: https://blog.csdn.net/chenxy_bwave/article/details/121661014

        (4) 二项分布

        (5) Student-T分布

        (6) Chi-Square分布

        (7) Rayleigh/Rice分布

        (8) Beta分布

        (9) Gamma分布

        (10) 玻尔兹曼分布

        (11) 指数分布

        (12) dirichlet分布

        ......

Reference:

        [1] scipy.stats.bernoulli — SciPy v1.7.1 Manual


http://chatgpt.dhexx.cn/article/jtI6TJP3.shtml

相关文章

matlab伯努利分布,常用的概率分布:伯努利分布、二项式分布、多项式分布、先验概率,后验概率...

一&#xff0c;伯努利分布(bernouli distribution) 又叫做0-1分布&#xff0c;指一次随机试验&#xff0c;结果只有两种。也就是一个随机变量的取值只有0和1。记为: 0-1分布 或B(1,p)&#xff0c;其中 p 表示一次伯努利实验中结果为正或为1的概率。 概率计算&#xff1a; P(X0)…

伯努利分布(一种离散分布)

伯努利分布&#xff08;0-1分布&#xff09; 笔记来源&#xff1a;Introduction to the Bernoulli Distribution 伯努利分布&#xff08;1次试验&#xff09;是二项分布&#xff08;n次试验&#xff09;的特例&#xff0c;其中进行了一次实验&#xff08; n 1 n1 n1&#xff…

伯努利分布(Bernoulli distribution)

伯努利分布 是一种离散分布,有两种可能的结果。1表示成功&#xff0c;出现的概率为p(其中0<p<1)。0表示失败&#xff0c;出现的概率为q1-p。这种分布在人工智能里很有用&#xff0c;比如你问机器今天某飞机是否起飞了&#xff0c;它的回复就是Yes或No&#xff0c;非常明确…

伯努利分布、二项分布、多项分布、Beta分布、Dirichlet分布

https://blog.csdn.net/michael_r_chang/article/details/39188321 https://www.cnblogs.com/wybang/p/3206719.html https://blog.csdn.net/jteng/article/details/60334628 1. 伯努利分布 伯努利分布(Bernoulli distribution)又名两点分布或0-1分布&#xff0c;介绍伯努利分…

【愚公系列】2022年09月 微信小程序-自定义tabBar的实现

文章目录 前言一、自定义tabBar的实现1.全局配置2.主页面3.CustomTabBar组件4.效果 前言 小程序自带的tabBar可以参考这篇文章&#xff1a;https://codeboy.blog.csdn.net/article/details/123040278 因为小程序自带的tabBar&#xff0c;比较单一&#xff0c;无法满足多样化需…

[cryptoverse ctf 2022] cvctf

一直在等wp&#xff0c;一直没找着&#xff0c;没有wp就没有进步。 把已知部分写出来吧&#xff0c;抛砖引玉 这个比赛只有crypto,reverse和misc(除一个签到外&#xff0c;都推特油管和谷歌网盘的题作不了) 目录 crypto Warmup 3 Warmup 1 Warmup 2 Substitution RSA 1…

Python | NumPy | 3D 数据可视化 - 散点图

本文介绍如何使用NumPy相关的数据实现数据的3D散点图可视化。 Updated: 2022 / 03 / 06 Python | NumPy | 3D 数据可视化 - 散点图 数据导入及清洗导入清洗获取全部坐标筛选特定坐标 数据3D可视化散点图单图多子图 参考链接 数据导入及清洗 先导入坐标集数据&#xff0c;再进行…

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3

使用 Learner Lab - 使用 API Gateway 与 Lambda 上传图片到 S3 AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务&#xff0c;让学生可以在 100 USD的金额下&#xff0c;自行练习所要使用的 AWS 服务&#xff0c;如何进入 Learner Lab 请参考 使用 Lear…

12306查询车票(爬虫小练_1)

文章目录 导入模块导入City.json文件内容分析撸代码city.json文件 导入模块 # 数据请求模块 import requests # 序列化和反序列化 import json # 表格格式输出&#xff08;美化输出&#xff09; import prettytable as pt 导入City.json文件 里面存放的是城市的对应标识(放在文…

K8S+Jenkins+Harbor+Docker+gitlab集群部署

K8SJenkinsHarborDockergitlab服务器集群部署 所需资源下载地址 将此文章写给我最心爱的女孩 目录 K8SJenkinsHarborDockergitlab服务器集群部署1.准备以下服务器2.所有服务器统一处理执行2.1 关闭防火墙2.2 关闭selinux2.3 关闭swap&#xff08;k8s禁止虚拟内存以提高性能&a…

多项式运算

多项式求逆 已知 f ( x ) f(x) f(x)&#xff0c;求 g ( x ) g(x) g(x)满足 f ( x ) g ( x ) ≡ 1 ( m o d x n ) f(x)g(x)\equiv 1\pmod{x^n} f(x)g(x)≡1(modxn)。 若 f 0 0 f_00 f0​0&#xff0c;那么显然不可能存在形式幂级数 g ( x ) g(x) g(x)满足条件。于是假定 f 0 …

Beyond Accuracy:Behavioral Testing of NLP Models with Checklist 论文阅读

本文主要介绍以及翻译一篇ACL2020 Best Paper Beyond Accuracy:Behavioral Testing of NLP Models with Checklist Abstract 尽管传统评估模型好坏的方法是在测试集上观察accuracy指标&#xff0c;然而这个指标常常高估了NLP模型的真实表现&#xff0c;而另外一些评估模型的方法…

国密 SM4 高并发服务 加压测服务 加生成秘钥 结合上篇一起使用 国密 SM2 SM3 SM4 后续升级版本,内容丰富单独写一篇百万压测4000毫秒加解密

介绍 这篇是专门适用于高并发场景的加解密功能服务&#xff0c;提供了并发代码 &#xff0c;压测代码 以及压测报告结合上篇文章一起使用最好&#xff0c;先看上篇在看这篇&#xff0c;循序渐进&#xff0c;上篇主要看SM4 方面即可其他概要观看即可&#xff0c;有需要可以看看也…

创建dependencies.gradle文件报错

创建AS项目统一管理build.gradle但是报错 1.Only Project and Settings build scripts can contain plugins {} blocks 大概意思&#xff0c;是使用plugins目前还不能在自己创建的gradle文件中使用所以还是需要使用apply plugin 2.dependencies.gradle No signature of method…

JCE cannot authenticate the provider BC

我是用hutool做RSA加密时候出现这个问题的&#xff0c;具体原因网上各说各的&#xff0c;解决办法也试过下载jar、配置jvm&#xff0c;用是能用&#xff0c;但是我们是在公共包写的&#xff0c;部署新服务的时候就麻烦了。 看了下hutool报错的地方&#xff0c;顺着找了找&#…

JDK8安装JCE无限强度

原文&#xff1a;https://www.jianshu.com/p/de81059a9e97 https://blog.csdn.net/arctan90/article/details/68066660 报错提示&#xff1a; Exception in thread "main" org.jasypt.exceptions.EncryptionOperationNotPossibleException: 下载jar&#xff1a;h…

java jce配置_jce_policy安装【java密码扩展无限制权限策略文件安装】

下载与JDK或JRE对应版本的jce文件包&#xff0c;当前机器的jdk为1.8&#xff0c;所以下载jce_policy-8.zip。 下载解压后&#xff0c;把jar文件上传到需要安装jce机器上JDK或JRE的security目录下&#xff0c;覆盖源文件即可。 JDK&#xff1a;将两个jar文件放到%JDK_HOME%\jre\…

java jce配置_配置jce开发环境 | 学步园

虽然JDK1.4将java安全包包含在核心库中&#xff0c;但如果不对jce进行配置&#xff0c;也没办法使用jce进行开发。 首先从sun网上下载jce1.2.2(我在网上看到的都是下载一个包&#xff0c;没用sun默认的)&#xff0c;然后把解压得到的lib里面的所有jar文件拷到your_jdk\jre\lib\…

java jce-KeyGenerator(密钥生成)

java jce-KeyGenerator&#xff08;密钥生成&#xff09; 在开发时&#xff0c;总要涉及到数据的加密与解密&#xff0c;之前一直有些糊涂&#xff0c;最近看了 jce.jar的源码&#xff0c;来整理记录一下 接着上篇 java jce-Cipher&#xff08;加密、解密&#xff09; 来介绍…

java jce-Cipher(加密、解密)

java jce-Cipher&#xff08;加密、解密&#xff09; 在开发时&#xff0c;总要涉及到数据的加密与解密&#xff0c;之前一直有些糊涂&#xff0c;最近看了 jce.jar的源码&#xff0c;来整理记录一下 1、概念 JCA&#xff08;Java Cryptography Architecture&#xff09;: J…