【五 (3)统计学知识-概型与概率分布python代码实现】

目录

    • 文章导航
    • 一、概率基础与性质
    • 二、概型模型
      • 1、古典概型
      • 2、几何概型
      • 3、伯努利试验概型
    • 三、组合和排序
      • 1、组合
      • 2、排序
    • 四、概率分布
      • 1、离散型分布
        • ①伯努利分布
        • ②二项分布
        • ③泊松分布
      • 2、连续型分布
        • ①均匀分布
        • ②指数分布
        • ③正态分布/高斯分布
        • ④对数正态分布
        • ⑥幂律分布
        • ⑦帕累托分布
        • ⑧韦伯分布
      • 3、特定应用分布
        • ①卡方分布
        • ②学生T分布
    • 五、期望与方差
      • 1、期望
      • 2、方差
      • 3、结合

文章导航

【一 简明数据分析进阶路径介绍(文章导航)】

一、概率基础与性质

概率,是度量某一事件发生的可能性大小的数值。概率的基本性质包括:

  • 非负性:对于任意事件A,有P(A) ≥ 0。
  • 归一性:对于必然事件S,有P(S) = 1。
  • 可加性:对于互斥事件A和B,有P(A∪B) = P(A) + P(B)。

案例:投掷一枚均匀的硬币,正面朝上的概率为P(正) = 0.5,反面朝上的概率为P(反) = 0.5。由于正面和反面是互斥的,所以P(正∪反) = P(正) + P(反) = 1。

二、概型模型

1、古典概型

是一类具有有限个“等可能”发生的基本事件的概率模型。其特点是:试验结果的有限性和每一个试验结果出现的等可能性。古典概型是概率论中最直观和最简单的模型,但它只适用于试验结果的有限性和等可能性的场合。

2、几何概型

它的特点与古典概型相似,也是等可能性,但它的实验结果(基本事件)是无限多个的。

3、伯努利试验概型

是关于独立重复试验序列的一类重要的概率模型。在相同的条件下重复地、相互独立地进行的一种随机试验,叫做伯努利试验。伯努利试验只有两种可能的结果,即“成功”和“失败”。

三、组合和排序

1、组合

组合是指从一个较大(n个)对象群体中取出一定数目(r个)对象,但不必知道所选对象的确切顺序。换句话说,组合关注的是对象的选择,而不是它们的排列顺序。

想象一个魔法师的帽子里有很多不同颜色、形状和大小的宝石。如果魔法师想从帽子里选出三颗宝石用于施展魔法,他关注的是选出了哪些宝石,而不是这些宝石被选出的具体顺序。因为无论这三颗宝石是按照什么顺序被选出的,它们组合在一起的效果都是一样的。

2、排序

排序,或者说排列,是指从一个较大(n个)对象群体中取出一定数目(r个)对象进行排序,并得出排序方式的总数目。与组合不同,排列不仅关注对象的选择,还关注它们的排列顺序。

一个小型赛车比赛,假设有十辆赛车参加比赛,我们需要确定前三名的具体排名。这里,不仅需要考虑哪三辆车将占据前三名的位置,还需要明确它们之间的具体排名顺序。因为第一名、第二名和第三名的顺序对于比赛结果来说是非常重要的。

四、概率分布

1、离散型分布

①伯努利分布

伯努利分布是一个离散型概率分布,它描述的是只有两种可能结果(通常记为0和1)的单次随机试验。例如,抛硬币的结果(正面或反面)就是一个伯努利试验。

import numpy as np  
import matplotlib.pyplot as plt  
import seaborn as sns  # 假设伯努利试验成功的概率为 p  
p = 0.6  # 假设成功的概率为60%  # 生成伯努利分布的样本数据  
n_samples = 1000  # 样本数量  
bernoulli_samples = np.random.choice([0, 1], size=n_samples, p=[1-p, p])  # 创建一个计数数组,用于统计0和1的出现次数  
counts = np.bincount(bernoulli_samples)  # 准备x轴标签  
x = np.arange(len(counts))  # 绘制条形图  
plt.figure(figsize=(8, 6))  
sns.barplot(x=x, y=counts, palette="Blues_d")  # 设置x轴标签  
plt.xlabel('Outcome')  
plt.xticks(x, ['0 (Failure)', '1 (Success)'])  # 设置y轴标签  
plt.ylabel('Frequency')  # 设置标题  
plt.title(f'Bernoulli Distribution with p={p}')  # 显示图形  
plt.show()

在这里插入图片描述

②二项分布

二项分布描述的是在n次独立的伯努利试验中,成功发生k次的概率。例如,抛硬币10次,正面朝上的次数。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  
from scipy.stats import binom  # 设置二项分布的参数  
n = 10  # 试验次数  
p = 0.5  # 成功概率  # 生成二项分布的概率质量函数(PMF)  
k = np.arange(binom.ppf(0.01, n, p), binom.ppf(0.99, n, p))  
pmf_values = binom.pmf(k, n, p)  # 使用seaborn绘制条形图  
plt.figure(figsize=(10, 6))  
sns.barplot(x=k, y=pmf_values, color="skyblue")  # 设置标题和轴标签  
plt.title(f'Binomial Distribution (n={n}, p={p})')  
plt.xlabel('Number of Successes')  
plt.ylabel('Probability')  # 显示图形  
plt.show()

在这里插入图片描述

③泊松分布

泊松分布是一种描述单位时间(或空间)内随机事件发生的次数的离散概率分布。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  
from scipy.stats import poisson  # 设置泊松分布的参数  
mu = 7  # 平均发生次数(泊松分布的λ参数)  # 生成泊松分布的概率质量函数(PMF)的k值范围  
k = np.arange(poisson.ppf(0.01, mu), poisson.ppf(0.99, mu))  # 计算对应k值的泊松分布概率  
pmf_values = poisson.pmf(k, mu)  # 使用seaborn绘制条形图  
plt.figure(figsize=(10, 6))  
sns.barplot(x=k, y=pmf_values, color="skyblue")  # 设置标题和轴标签  
plt.title(f'Poisson Distribution (λ={mu})')  
plt.xlabel('Number of Events')  
plt.ylabel('Probability')  # 显示图形网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

2、连续型分布

①均匀分布

在均匀分布中,所有可能的取值都具有相同的概率。例如,抛一个公平的六面骰子,每个数字出现的概率都是1/6。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 生成均匀分布的样本数据  
a = 0  # 分布的下界  
b = 10  # 分布的上界  
n_samples = 1000  # 样本数量  
uniform_samples = np.random.uniform(a, b, size=n_samples)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(uniform_samples, kde=True, bins=30, color="skyblue", alpha=0.7, label='Uniform Distribution')  # 设置标题和轴标签  
plt.title('Uniform Distribution')  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

②指数分布

指数分布是一种连续概率分布,描述了事件之间的时间间隔。例如,顾客到达商店的时间间隔。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 生成指数分布的样本数据  
lambda_param = 0.5  # 指数分布的λ参数,控制分布的速率  
n_samples = 1000  # 样本数量  
exponential_samples = np.random.exponential(scale=1/lambda_param, size=n_samples)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(exponential_samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Exponential Distribution')  # 设置标题和轴标签  
plt.title('Exponential Distribution (λ={})'.format(lambda_param))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

③正态分布/高斯分布

正态分布是一种连续概率分布,其概率密度函数曲线呈钟形,关于均值对称,是最常见的连续型概率分布。它描述了许多自然现象,例如人的身高或考试的分数。高斯分布由均值和标准差决定。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 生成正态分布的样本数据  
mean = 0  # 正态分布的均值  
std_dev = 1  # 正态分布的标准差  
n_samples = 1000  # 样本数量  
normal_samples = np.random.normal(mean, std_dev, size=n_samples)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(normal_samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Normal Distribution')  # 设置标题和轴标签  
plt.title('Normal/Gaussian Distribution (μ={}, σ={})'.format(mean, std_dev))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

④对数正态分布

如果一个随机变量的对数服从正态分布,那么该变量服从对数正态分布。它常用于描述某些偏态分布的数据,如某些金融资产的收益。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 生成对数正态分布的样本数据  
mu = 0  # 对数正态分布的均值(对数尺度)  
sigma = 1  # 对数正态分布的标准差(对数尺度)  
n_samples = 1000  # 样本数量  
normal_samples = np.random.normal(mu, sigma, size=n_samples)  
lognormal_samples = np.exp(normal_samples)  # 对正态分布样本取指数得到对数正态分布样本  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(lognormal_samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Log-normal Distribution')  # 设置标题和轴标签  
plt.title('Log-normal Distribution (μ={}, σ={})'.format(mu, sigma))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

⑥幂律分布

描述了事件发生的频率与其排名之间的关系,常用于描述社会网络、城市规模等现象。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 幂律分布的参数  
xmin = 1  # 幂律分布的最小值  
alpha = 2.5  # 幂律分布的指数参数(也称为形状参数)  # 生成幂律分布的样本数据  
def generate_powerlaw_samples(xmin, alpha, size):  samples = []  while len(samples) < size:  # 使用逆变换采样生成符合幂律分布的样本  u = np.random.rand(size)  x = xmin * (1 - u) ** (-1 / alpha)  # 过滤掉超出范围的样本  samples.extend(x[x > 0].tolist())  # 如果生成的样本足够,则退出循环  if len(samples) >= size:  break  return np.array(samples[:size])  n_samples = 100  # 样本数量  
powerlaw_samples = generate_powerlaw_samples(xmin, alpha, n_samples)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(powerlaw_samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Power-law Distribution')  # 设置标题和轴标签  
plt.title('Power-law Distribution (xmin={}, α={})'.format(xmin, alpha))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

⑦帕累托分布

常用于描述社会、经济现象中的不平等性,如财富和收入的分布。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 帕累托分布的参数  
xm = 1  # 最小尺度参数(也称为位置参数)  
alpha = 1.5  # 形状参数(也称为形状指数)  # 生成帕累托分布的样本数据  
def generate_pareto_samples(xm, alpha, size):  u = np.random.rand(size)  samples = xm / (u ** (1 / alpha) - 1)  return samples  n_samples = 100  # 样本数量  
pareto_samples = generate_pareto_samples(xm, alpha, n_samples)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(pareto_samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Pareto Distribution')  # 设置标题和轴标签  
plt.title('Pareto Distribution (xm={}, α={})'.format(xm, alpha))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

⑧韦伯分布

常用于描述设备的故障时间分布。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  
from scipy.stats import weibull_min  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 韦伯分布的参数  
c = 1  # 尺度参数  
k = 2  # 形状参数  # 生成韦伯分布的样本数据  
size = 1000  # 样本数量  
samples = weibull_min.rvs(k, size=size, scale=c)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Weibull Distribution')  # 设置标题和轴标签  
plt.title('Weibull Distribution (c={}, k={})'.format(c, k))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

3、特定应用分布

①卡方分布

卡方分布通常用于检验观测频率与期望频率之间的差异,或者检验一个或多个变量的独立性。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  
from scipy.stats import chi2  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 卡方分布的参数  
df = 3  # 自由度  # 生成卡方分布的样本数据  
size = 1000  # 样本数量  
samples = chi2.rvs(df, size=size)  # 使用seaborn的histplot绘制直方图  
plt.figure(figsize=(10, 6))  
sns.histplot(samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Chi-Squared Distribution')  # 设置标题和轴标签  
plt.title('Chi-Squared Distribution (df={})'.format(df))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

②学生T分布

T分布用于小样本统计推断,特别是当总体标准差未知时。T检验就是基于T分布的。

import numpy as np  
import seaborn as sns  
import matplotlib.pyplot as plt  # 设置随机种子以获得可重复的结果  
np.random.seed(0)  # 学生T分布的参数  
df = 3  # 自由度  # 生成学生T分布的样本数据  
size = 500  # 样本数量  
samples = np.random.standard_t(df, size)  # 创建一个图形和轴对象  
plt.figure(figsize=(10, 6))  # 使用seaborn的histplot绘制直方图  
sns.histplot(samples, kde=True, bins='auto', color="skyblue", alpha=0.7, label='Student\'s t-Distribution')  # 设置标题和轴标签  
plt.title('Student\'s t-Distribution (df={})'.format(df))  
plt.xlabel('Value')  
plt.ylabel('Frequency')  # 显示图例  
plt.legend()  # 显示网格  
plt.grid(True)  # 显示图形  
plt.show()

在这里插入图片描述

五、期望与方差

1、期望

期望,也称为均值,是随机变量所有可能取值的平均值。它反映了随机变量在大量重复试验中的平均水平。

一个抽奖活动,每次抽奖都有机会获得不同数量的奖金。如果抽奖次数足够多,你获得的平均奖金金额就是期望。比如,抽奖活动有50%的概率获得10元,50%的概率获得20元,那么期望就是(10元×50% + 20元×50%)= 15元。

2、方差

方差则是用来描述随机变量取值与其期望之间的偏离程度。方差越大,说明随机变量的取值越离散,波动越大;方差越小,说明取值越集中,波动越小。

一个射击游戏,玩家的目标是击中靶心。如果大部分玩家的射击结果都集中在靶心附近,那么射击结果的方差就很小,说明玩家的射击水平比较稳定。但如果射击结果分散在靶子的各个角落,甚至打到靶子外面,那么方差就很大,说明玩家的射击水平不够稳定。

3、结合

将期望和方差结合在一个案例中。假设你正在考虑投资两种不同的股票。股票A的期望收益率较高,但方差也很大,意味着它有可能带来高额回报,但同样存在较大的风险。而股票B的期望收益率较低,但方差较小,相对稳定。在做出投资决策时,你需要根据自己的风险承受能力和投资目标来权衡这两个因素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/557215.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ECharts5 概念篇2

数据转换 数据转换基础使用 在 echarts 中&#xff0c;数据转换是依托于数据集&#xff08;dataset&#xff09;来实现的. 我们可以设置 dataset.transform 来表示&#xff0c;此 dataset 的数据&#xff0c;来自于此 transform 的结果。下面是上述例子的效果&#xff0c;三个饼…

C语言例:设 int a,b; 则表达式(a=2,b=5,a++,b++,a+b) 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int a,b,m; m(a2,b5,a,b,ab);printf("(a2,b5,a,b,ab) %d\n",m);//a2,b5,a3,b6,ab9return 0; } 结果如下&#xff1a;

【Linux进程的状态】

目录 看Linux源码中的说法 如何查看进程状态&#xff1f; 各个状态的关系 僵尸进程 举个栗子 现象 僵尸进程的危害 孤儿进程 举个栗子 现象 进程的优先级 基本概念 为什么要有进程优先级&#xff1f; 查看系统进程 进程的大致属性 进程优先级vs进程的权限 Linu…

odoo扩展导出pdf功能

1. 说明: odoo原生导出功能扩展导出pdf文件功能, 如有额外需求请联系博主 2. 版本说明: odoo版本: odoo15 其他odoo版本未进行测试,如有需要自行测试 3. 地址: 该补丁代码放在github仓库, 地址: https://github.com/YSL-Alpaca/odoo_export_pdf 4. 改补丁依赖于第三方软件wkh…

阿里云优惠券、代金券、折扣券领取方法及使用教程

随着云计算技术的普及和发展&#xff0c;越来越多的企业和个人开始选择使用云服务。阿里云作为国内领先的云计算服务提供商&#xff0c;为广大用户提供了丰富多样的云产品和服务。为了吸引用户上云&#xff0c;阿里云经常推出各种优惠活动&#xff0c;其中就包括阿里云优惠券。…

进程创建,程序加载运行,以及进程终止,什么是僵尸进程,什么是孤儿进程

进程控制 创建进程&#xff0c;撤销进程&#xff0c;实现进程转换&#xff08;必须一气呵成&#xff0c;使用原语&#xff09; 原语不被中断是因为有关中断指令 创建进程 撤销进程 进程创建fork fork&#xff08;&#xff09;函数会创建一个子进程&#xff0c;子进程会返…

Redis中的过期键删除策略

过期键删除策略 概述 数据库键的过期时间都保存在过期字典中&#xff0c;并且知道根据过期时间去判断一个键是否过期,剩下的问题是&#xff1a;如果一个键过期了&#xff0c;那么它什么时候会被删除呢? 这个问题有三种可能的答案&#xff0c;它们分别代表了三种不同的删除策…

PPT好看配色

放几个链接&#xff01;画图时候可以参考&#xff01;转自知乎 Color Hunt ColorDrop 中国色 Flat UI Colors Coolors

深兰科技“AI数字伙伴”亮相“全国社会心理服务体系建设经验交流大会”

我国首届“全国社会心理服务体系建设经验交流大会”在山东省滨州市黄河三角洲交易中心举行&#xff0c;深兰科技携最新研发的“AI数字伙伴”出席大会&#xff0c;公开亮相&#xff01; 本次会议由国家心理健康和精神卫生防治中心、华夏时报社联合主办&#xff0c;是目前国内社会…

UE5的渲染-太难了

大家可以看到&#xff0c;这些都是UE的渲染&#xff0c;非常漂亮惊叹&#xff0c;渲染已经非常成熟&#xff0c;这些画面并不是离线渲染&#xff0c;而是实时渲染。早先年我们渲染CG动画都采用离线渲染&#xff0c;要用到庞大的渲染农场&#xff0c;每渲染一帧都可能需要半个小…

美易官方:美股维持涨势,三大股指再创新高

在今日的早盘交易中&#xff0c;美股市场继续维持其涨势&#xff0c;三大股指再次刷新历史纪录。市场信心受到一系列积极经济数据的支撑&#xff0c;投资者对未来的经济增长和企业盈利保持乐观态度。 首先&#xff0c;让我们来看一下道琼斯工业平均指数的表现。该指数在早盘交易…

MT1478 插入A(技巧)

从键盘上输入一个字符串&#xff08;长度小于10000&#xff0c;以回车作为结束&#xff0c;其余地方不出现回车&#xff09;&#xff0c;按后按照下面要求输出一个新字符串&#xff0c; 新的字符串是在原来字符串中&#xff0c; 每两个字符之间插入一个A&#xff0c; 输出新产生…