重温二项分布

161 篇文章 7 订阅

实现我们在概率论与数理统计课上学过的二项(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 st
import numpy as np
import matplotlib.pyplot as plt
fig, 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
>>> mean
array(2.0)          # n*p = 5*0.4 = 2.
>>> var
array(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互为反函数
>>> x
array([ 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)
>>> prob
array([ 0.07776,  0.33696,  0.68256,  0.91296,  0.98976])
>>> np.allclose(x, rv.ppf(prob))
True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值