首页 > 其他 > 详细

概率论基础

时间:2020-06-03 21:42:55      阅读:55      评论:0      收藏:0      [点我收藏+]

随机变量:值并不固定

  (1)离散型随机变量:抛硬币出现正反面的次数以及每周下雨的天数

  (2)连续型随机变量:汽车每小时行驶的速度和银行排队的时间

总结:需要求和得出的就是离散型,需要积分计算得出的就是连续型

 

1. 离散性

例1:抛硬币

 1 import random
 2 import pandas as pd
 3 import numpy as np
 4 import matplotlib.pyplot as plt
 5 
 6 def flip_coin(times):
 7   data_array = np.empty(times)   # 生成一个10行的矩阵,存放data [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 8   weights_array = np.empty(times)  # 生成一个10行的矩阵,存放weight  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 9   weights_array.fill(1 / times)  # [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
10 
11   for i in range(0, times):                 # 抛times次的硬币
12     data_array[i] = random.randint(0, 1)    # 假设0表示正面,1表示反面  [0., 1., 1., 0., 0., 0., 0., 1., 0., 1.]
13 
14   data_frame = pd.DataFrame(data_array)  # 将矩阵数据进行格式化
15   data_frame.plot(kind=hist, legend=False)  #获取正反面统计次数的直方图
16   data_frame.plot(kind=hist, legend=False, weights=weights_array).set_ylabel("Probability")  # 获取正反面统计概率的直方图
17   plt.show()
18 
19 flip_coin(10)

    抛10次的结果             

技术分享图片    技术分享图片

 

随着抛硬币次数越来越多,正面反面出现次数趋近于一致

也就是说,统计的采样次数越多,越趋近于我们理论上的情况。因此,从这个统计实验我们可以看出,概率分布描述的其实就是随机变量的概率规律

 

2. 连续型

抛硬币正面次数、每周下雨天数这种离散型随机变量,对应的概率分布是很好理解的,但是对于连续型的随机变量,如何理解它们的概率分布呢?

将连续数据离散化

例如汽车速度仪表盘:现实生活中我们通过汽车的仪表盘所读取速度,都是整数值,例如每小时 60 公里。也许比较高档的车会显示数字化的速度,带有小数位,但实际上汽车最精确的速度是一个无限位数的小数,是从 0 到最高公里数的一个任意数值。所以仪表盘所显示的数字,是将实际速度离散化处理之后的数字。除了仪表盘上的速度,汽车行驶在时间维度上也是连续的。类似地,我们还需要对时间进行离散化,比如每分钟查看仪表盘一次并读取速度值。

例二:模拟汽车仪表盘,记录行车速度

假设:仪表盘最小刻度是 5,也就是说,它只能显示 55、60、65 这种公里数。然后每 1 分钟采样一次(读一次仪表盘),那么 1 小时内我们将生成 60 个数据。示例代码如下:

 1 import random
 2 import pandas as pd
 3 import numpy as np
 4 import matplotlib.pyplot as plt
 5 
 6 
 7 def check_speed(time_gap, speed_gap, total_time, min_speed, max_speed):
 8 
 9   times = int(total_time / time_gap)   # 获取读取仪表盘的次数
10 
11   data_array = np.empty(times)    # [0, 0, 0, ...] 60个
12   weights_array = np.empty(times) # [0, 0, 0, ...] 60个
13   weights_array.fill(1 / times)   # [0.01666667, 0.01666667, 0.01666667,.....] 60个
14 
15   for i in range(0, times):
16     if speed_gap < 1:     #如果速度间隔小于1,那么就会强制生成一个最高速和最低速度之间的一个速度
17       data_array[i] = random.random() * max_speed
18     else:
19       data_array[i] = random.randint(0, max_speed / speed_gap) * speed_gap  #随机生成一个最高速和最低速之间的速度,先除以speed_gap然后乘以speed_gap进行离散化
20       # array([130., 140.,  65.,  20., 125.,  15.,  65.,...] 60个
21   data_frame = pd.DataFrame(data_array)  # 格式化
22   bin_range = np.arange(0, 200, speed_gap)  # 设置横坐标区间 0-200 间隔为:5
23   data_frame.plot(kind = hist, bins = bin_range, legend = False)  #获取时速统计次数的直方图
24   data_frame.plot(kind = hist, bins = bin_range, legend = False, weights = weights_array, ).set_ylabel("Probability")  #获取时速统计概率的直方图
25   plt.show()
26 
27 check_speed(1, 5, 60, 0, 200)

生成的速度数据直方图:

技术分享图片            技术分享图片

第二次模拟,假设我们把车升级到当今的主流车,仪表盘的最小刻度已经到 1 了,然后时间维度上,我们细分到 0.1 分钟,那么 1 小时我们将生成 600 个数据。我们还可以进行第三次、第四次、甚至是无穷次的模拟,每次模拟的时候我们都将行驶速度的精度进一步提升、将时间间隔进一步缩小,让两者都趋近于 0,那么我们的模拟就从离散逐步趋近于连续的值了。

技术分享图片     技术分享图片

上面通过两个模拟实验,分别展示了离散型和连续型概率的分布。其实,人们在实际运用中,已经总结出了一些概率分布,这里挑几个最常见的进行讲解。

常用的离散分布有伯努利分布、分类分布、二项分布、泊松分布等等,这里我重点介绍两个。

1. 伯努利分布

第一个是伯努利分布(Bernoulli Distribution),这是单个随机变量的分布,而且这个变量的取值只有两个,0 或 1。伯努利分布通过参数λ来控制这个变量为 1 的概率。

                        技术分享图片

 

或者写作:

      技术分享图片

另一个是分类分布(Categorical Distribution),也叫 Multinoulli 分布。它描述了一个具有 k 个不同状态的单个随机变量。这里的 k,是有限的数值,如果 k 为 2 的时候,那么分类分布就变成了伯努利分布。我把这个分布的公式和图解都列了出来.

 

 

 

 

 

 

 

现实生活中我们通过汽车的仪表盘所读取速度,都是整数值,例如每小时 60 公里。也许比较高档的车会显示数字化的速度,带有小数位,但实际上汽车最精确的速度是一个无限位数的小数,是从 0 到最高公里数的一个任意数值。所以仪表盘所显示的数字,是将实际速度离散化处理之后的数字。除了仪表盘上的速度,汽车行驶在时间维度上也是连续的。类似地,我们还需要对时间进行离散化,比如每分钟查看仪表盘一次并读取速度值

概率论基础

原文:https://www.cnblogs.com/nnnnbbbb1/p/13040047.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!