龙空技术网

通过 Python 示例理解概率

自由坦荡的湖泊AI 106

前言:

此刻大家对“事件和概率公式”大约比较珍视,同学们都需要了解一些“事件和概率公式”的相关文章。那么小编在网上搜集了一些有关“事件和概率公式””的相关文章,希望各位老铁们能喜欢,咱们快快来了解一下吧!

1. 概率分布

概率分布是描述随机事件中不同结果的可能性的函数。在Python中,NumPy库提供了几种概率分布,例如正态分布、二项式分布和泊松分布。

示例:从平均值为 0、标准差为 1 的正态分布生成 500 个样本:

将numpy导入为np样本 = np.random.normal( 0 , 1 , 500 )
2. 经验概率

经验概率基于实际观察或数据。它的计算方式为事件发生的次数除以观察总数。

示例:计算抛硬币并得到正面的经验概率:

将numpy导入为np coin_flips = np.random.randint( 0 , 2 , 1000 ) Heads_count = np. 总和(coin_flips == 1)experimental_prob = Heads_count / 1000
3.条件概率

条件概率是一个事件在另一个事件发生的情况下发生的概率。它的计算方式为两个事件发生的概率除以给定事件的概率。可以使用以下公式计算条件概率:

P(A | B) = P(A and B) / P(B)

示例:假设该牌是人头牌,计算从一副标准牌中抽出红牌的条件概率。

# 计算从一副标准牌中抽出一张红色牌的条件概率,假设该牌是一张人头牌# 这副牌中人头牌的总数 num_face_cardsnum_face_cards = 12 # 红色人头牌的数量num_red_face_cards = 3 # 概率抽到人脸牌的概率p_face_card = num_face_cards / 52 # 抽到红脸牌的概率p_red_face_card = num_red_face_cards / 52 # 假设该牌是人脸牌,抽到红牌的条件概率p_red_given_face = num_red_face_cards / num_face_cards print (“假设该牌是人头牌,则从一副标准牌中抽出一张红牌的条件概率为:”,p_red_given_face)

输出:

假设该牌是人头牌,则从一副标准牌中抽出红牌的条件概率为:0.25 

在上面的例子中,使用条件概率来计算从一副标准牌中抽出红牌的机会,前提是知道该牌是人头牌(J、Q 或 K)。知道一副牌中有 12 张人头牌,其中 3 张是红色的(红心皇后、方块皇后和方块国王)。因此,假设知道这张牌是人头牌,则抽到红牌的概率为:3/12 = 0.25

这意味着,假设知道这张牌是人头牌,则从一副标准牌中抽出红牌的概率为25% 。

4. 全概率定律

总概率定律指出,可以通过考虑事件发生的所有可能方式来计算事件的概率。

在数学上,总概率定律可以表示为:

P(A) = Σ P(A | B) P(B)

其中 P(A) 是事件 A 的概率,P(A | B) 是给定 B 时 A 的条件概率,P(B) 是事件 B 的概率,并对 B 的所有可能值进行求和。

示例:假设一家公司为其产品提供三种不同的交付方式:标准交付、快递和当日交付。60%的客户选择标准配送,30%选择快递,10%选择当日送达。普通配送的配送成功率达到95%,快递配送的配送成功率达到90%,当日配送的配送成功率达到85%。如果客户送货失败,他选择快递的概率是多少?

# 定义配送方式及其概率Delivery_methods = [ "standard" , "express" , "same-day" ] Delivery_probabilities = [ 0.6 , 0.3 , 0.1 ] # 定义每种方式的配送成功率 success_rates = { "standard" : 0.95 , "express" : 0.9 , "same-day" : 0.85 } # 计算每种方法投递失败的概率failure_rates = {method:1 -方法的success_rates[method]in Delivery_methods} # 计算一次投递失败的总概率total_failure_prob = sum (failure_rates[method] * Delivery_probabilities[i] for i, method in  enumerate (delivery_methods)) # 计算选择快递且投递失败的概率express_failure_prob = failure_rates [ "express" ] * Delivery_probabilities[delivery_methods.index( "express" )] # 计算在投递失败的情况下选择快递的概率express_given_failure_prob = express_failure_prob / total_failure_prob print (“由于送货失败,客户选择快递的概率为:”,express_given_failure_prob)

客户在送货失败的情况下选择快递的概率为:0.375

5.贝叶斯定理

它是一个公式,允许我们根据新信息更新事件的概率。它指出:

P(A | B) = P(B | A) * P(A) / P(B)

其中 A 和 B 是两个事件。

示例:如果医学测试检测疾病的准确率是 95%,并且 1% 的人口患有该疾病,则使用贝叶斯定理计算给定测试结果呈阳性的情况下患有该疾病的概率

# 定义患有疾病的先验概率p_disease = 0.01 # 定义医学测试的敏感性和特异性 敏感性= 0.95特异性 = 0.95 # 定义在有疾病和无疾病的情况下测试结果呈阳性的概率p_pos_given_disease = 敏感性p_pos_given_no_disease = 1 - Specificity # 计算阳性检测结果的概率p_pos = p_disease * p_pos_given_disease + ( 1 - p_disease) * p_pos_given_no_disease # 使用贝叶斯定理计算给定阳性检测结果的患病概率p_disease_given_pos = p_pos_given_disease * p_disease / p_pos # 打印结果print ( "给出阳性检测结果,患有该疾病的概率为:" , round (p_disease_given_pos * 100 , 2 ), "%" )

检测结果呈阳性,患病概率为:16.02%

在此示例中,使用贝叶斯定理根据阳性检测结果诊断医疗状况。知道患有该疾病的先验概率 (1%),以及诊断测试的敏感性 (90%) 和特异性 (95%)。给定阳性测试结果,使用此信息来计算患有该病症的后验概率。

6. 蒙特卡罗模拟

它是一种使用随机抽样来估计复杂系统中不同结果的概率的技术。它涉及使用随机输入多次运行模拟以获得可能结果的分布。结果可用于计算概率或对系统进行预测。

蒙特卡洛模拟的公式为:

随机值 = σ * NORMSINV(RAND())

示例:估计两次抛硬币至少出现正面朝上的概率。

import random # 定义要使用的模拟和成功次数n_simulations = 1000000 n_successes = 0 # 运行模拟for i in  range (n_simulations):     coin_tosses = [random.choice([ 'H' , 'T' ]) for _ in  range ( 2 )]     if  'H'  in coin_tosses:         n_successes += 1 # 计算两次抛硬币中至少出现一个正面的估计概率p_estimate = n_successes / n_simulations # 打印结果print ( "使用蒙特卡罗模拟两次抛硬币至少得到一个正面的估计概率为:" , p_estimate)

输出:

使用蒙特卡罗模拟,两次抛硬币至少出现一个正面的估计概率为:0.74997

估计概率接近准确概率,即 3/4 或 0.75。随着我们增加模拟次数,估计将变得更加准确。

7. 假设检验

它是一种统计方法,用于根据数据样本检验有关总体的主张或假设。它常用于科学研究和商业应用。

示例:演示使用两个独立样本的 t 检验进行假设检验。t 检验用于比较两组的平均值并确定它们是否存在显着差异。

import numpy as np from scipy.stats import ttest_ind # 定义两组数据group1 = np.array([ 5 , 6 , 7 , 8 , 9 ]) group2 = np.array([ 1 , 2 , 3 , 4 , 5 ]) # 执行 t 检验t_stat, p_val = ttest_ind(group1, group2) # 打印结果print ( "The t-statistic is:" , t_stat) print ( "The p-value is:" , p_val)# 解释结果if p_val < 0.05 :     print ( "均值差异具有统计显着性。" ) else :     print ( "均值差异不具有统计显着性。" )

输出:

t 统计量为: 5.1234753829798 p值为: 0.0007413837101312145均值差异具有统计显着性。

在此示例中,有两组数据(组 1 和组 2),想要测试它们的均值是否显着不同。我们使用ttest_ind()SciPy 库中的函数执行 t 检验并获得 t 统计量和 p 值。t 统计量衡量两组平均值之间相对于每组内变异性的差异。p 值是假设原假设为真,获得与观察值一样极端或更极端的 t 统计量的概率。

根据 p 值,可以解释结果并确定均值差异是否具有统计显着性。如果 p 值小于所选的显着性水平(通常为 0.05),将拒绝原假设并得出结论:均值差异具有统计显着性。否则,无法拒绝原假设并得出结论:均值差异在统计上不显着。

标签: #事件和概率公式 #python概率题 #python采样定理