随机抽样
- 离散型随机变量
- 二项分布/0-1分布
- 概念
- PYTHON CODE:
- 应用
- 补充
- 泊松分布/Poisson分布
- 超几何分布
- 连续型随机变量
- 均匀分布
- 正态分布
- 指数分布
- 其他随机函数
np.random.seed()随机数种子,功能:每次生成的随机数因时间差异而不同。
为什么需要seed:在数据预处理中,如果有随机操作,最好制定一个随机数种子,避免随机数据对结果造成影响。
随机变量分为离散型随机变量与 非离散型随机变量两种,随机变量的函数仍为随机变量。
离散型随机变量
离散型随机变量的重要分布有:0-1分布、泊松分布、超几何分布
二项分布/0-1分布
概念
一项试验有两个结果,其中事件A发生的概率为p。
X=1(事件发生)
X=0(事件未发生)
则X的分布列为:
X | 0 | 1 |
P | 1-p | p |
则称X符合伯努利0-1分布。其中,p=P(X=1)为成功的概率。
PYTHON CODE:
函数原型:
np.random.binomial(n,p,size=None)
parameter:
n:表示n次伯努利试验;int型或者一个int型的数组,大于等于0,接受浮点数但是会被变成整数来使用。
p:表示试验成功的概率;float或者一组float的数组,大于等于0且小于等于1.
size:表示整个n次伯努力试验进行的次数;可选项,int或者int的元祖,表示的输出的大小,如果提供了size,例如(m,n,k),那么会返回mnk个样本。如果size=None,也就是默认没有的情况,当n和p都是一个数字的时候只会返回一个值,否则返回的是np.broadcast(n,p).size个样本
应用
问题1:小红正在进行9(n=9)口石油勘探井的发掘工作,每一口井能够开发出油的概率是0.1(p=0.1)。请问,最终所有的勘探井都勘探失败的概率?
代码:
>>> n=9
>>> p=0.1
>>> size=50000
>>> x = np.random.binomial(n,p,size)
>>> print(x)
[1 1 2 ... 2 1 1]
>>> print(np.sum(x==0)/size)#所有的井都失败的概率
0.39184
>>> plt.hist(x)#把x绘制直方图
(array([1.9592e+04, 1.9122e+04, 0.0000e+00, 8.5710e+03, 0.0000e+00,
2.3100e+03, 3.5600e+02, 0.0000e+00, 4.6000e+01, 3.0000e+00]), array([0. , 0.6, 1.2, 1.8, 2.4, 3. , 3.6, 4.2, 4.8, 5.4, 6. ]), <a list of 10 Patch objects>)
>>> plt.xlabel('times of success')
Text(0.5, 0, 'times of success')
>>> plt.ylabel('times of appearing')
Text(0, 0.5, 'times of appearing')
>>> plt.show()
>>> ex= n*p#期望
>>> print(ex)
0.9
>>> varx = n*p*(1-p)#方差
>>> print(varx)
0.81
问题2:模拟投硬币,投2次,请问两次都为正面的概率?
代码:
>>> n= 2
>>> p=0.5
>>> size=50000
>>> x= np.random.binomial(n,p,size)
>>> print(x)
[2 0 1 ... 1 1 2]
>>> print(np.sum(x==0)/size)
0.24956
>>> print(np.sum(x==1)/size)
0.5013
>>> print(np.sum(x==2)/size)
0.24914
>>> plt.hist(x,density=True)
(array([1.2478, 0. , 0. , 0. , 0. , 2.5065, 0. , 0. ,
0. , 1.2457]), array([0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. ]), <a list of 10 Patch objects>)
>>> plt.xlabel('times of top')
Text(0.5, 0, 'times of top')
>>> plt.ylabel('times of appearing')
Text(0, 0.5, 'times of appearing')
>>> plt.show()
>>> s = stats.binom.pmf(range(n+1),n,p)#计算期望和方差
#概率质量函数 (Probability Mass Function,PMF)是离散随机变量在各特定取值上的概率。
#累积分布函数(Cumulative Distribution Function,CDF),又叫分布函数,是概率密度函数的积分,能完整描述一个实随机变量X的概率分布。
>>> print(s)
[0.25 0.5 0.25]
>>> plt.plot(range(n+1),s)
[<matplotlib.lines.Line2D object at 0x00000205383AC2B0>]
>>> plt.show()
补充
概率质量函数PMF与概率密度函数PDF的区别:
概率质量函数是针对离散型随机变量定义的,本身代表该值的概率;
概率密度函数是对连续型随机变量定义的,本身不是概率,只有对连续随机变量的概率密度函数在某区间内积分后才是概率。
泊松分布/Poisson分布
泊松分布适合于描述单位时间内随机事件发生的次数。
泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。
泊松分布的期望和方差均为λ。
泊松分布的概率函数为:
超几何分布
连续型随机变量
均匀分布
正态分布
指数分布
其他随机函数