随机抽样

  • 离散型随机变量
  • 二项分布/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

python 计算数组离散度 numpy离散系数_Text


问题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()

python 计算数组离散度 numpy离散系数_python 计算数组离散度_02

python 计算数组离散度 numpy离散系数_python 计算数组离散度_03

补充

概率质量函数PMF与概率密度函数PDF的区别:
概率质量函数是针对离散型随机变量定义的,本身代表该值的概率;
概率密度函数是对连续型随机变量定义的,本身不是概率,只有对连续随机变量的概率密度函数在某区间内积分后才是概率。

泊松分布/Poisson分布

泊松分布适合于描述单位时间内随机事件发生的次数。

泊松分布的参数λ是单位时间(或单位面积)内随机事件的平均发生次数。

泊松分布的期望和方差均为λ。

泊松分布的概率函数为:

python 计算数组离散度 numpy离散系数_python 计算数组离散度_04

超几何分布

连续型随机变量

均匀分布

正态分布

指数分布

其他随机函数