重温二项分布

来源:互联网 发布:qq堂mac版官方下载 编辑:程序博客网 时间:2024/05/20 12:22

实现我们在概率论与数理统计课上学过的二项(binomial)分布,属于一种离散型随机变量(discrete random variable),其概率质量函数(probability mass function)为:

f(k;n,k)=Pr(K=k)=(nk)pk(1p)nk

E[X]=np,Var[X]=np(1p)

import scipy.stats as stimport numpy as npimport matplotlib.pyplot as pltfig, ax = plt.subplots(1, 1)

计算数字特征

计算其常用矩(或者说是数字特征,比如一阶矩:期望,二阶矩:方差):

>>> n, p = 5, .4>>> mean, var, skew, kurt = st.binom.stats(n, p, moments='mvsk')                    # 'mvsk': mean, var, skew, kurt>>> meanarray(2.0)          # n*p = 5*0.4 = 2.>>> vararray(1.2)          # n*p*(1-p)=1.2

或者我们首先创建一个服从二项分布(离散型)的随机变量,通过调用其成员函数的形式进行各种操作(也即是一种面向对象的编程方式):

>>> n, p = 5, .4>>> rv = st.binom(n, p)>>> mean, var, skew, kurt = rv.stats(moments='mvsk')

计算概率质量函数(pmf:probability mass function)

>>> x = np.arange(rv.ppf(0.01), rv.ppf(0.99))                # ppf: percent point function                # ppf与cdf互为反函数>>> xarray([ 0.,  1.,  2.,  3.,  4.])>>> ax.plot(x, rv.pmf(x), 'bo', ms=8, label='binomial pmf')>>> ax.vlines(x, 0, rv.pmf(x), color='b', lw=5, alpha=.5)>>> ax.legend(loc='best', frameon=False)>>>plt.show()


这里写图片描述

计算累计密度函数(cdf:cumulative density function)

>>> prob = rv.cdf(x)>>> probarray([ 0.07776,  0.33696,  0.68256,  0.91296,  0.98976])>>> np.allclose(x, rv.ppf(prob))True
0 0
原创粉丝点击