数据科学分布——二项式分布

概念

在n次独立重复的伯努利试验中,设每次试验中事件A发生的概率为p。用X表示n重伯努利试验中事件A发生的次数,则X的可能取值为0,1,…,n,且对每一个k(0≤k≤n),事件{X=k}即为“n次试验中事件A恰好发生k次”,随机变量X的离散概率分布即为二项分布(Binomial Distribution)。
在这里插入图片描述
N·p表示分布的均值

  • PMF(概率质量函数): 是对 离散随机变量 在各个特定取值的概率. 该函数通俗来说,就是对于一个离散型概率事件来说,使用这个函数来求它的各个成功事件结果的概率.
  • PDF(概率密度函数): 是对 连续型随机变量 的定义. 与PMF不同的是PDF在特定点的值并不是该点的概率,连续型随机概率事件只能求一段区域内发生事件的概率,通过对这段区间进行积分来求. 通俗来说,使用这个概率密度函数将想要求概率的区间的临界点(最大值和最小值)带入求积分. 就是该区间的概率.
# 加载功能包
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
import matplotlib.style as style
from IPython.core.display import HTML

# 指定大小
%matplotlib inline
style.use('fivethirtyeight')
plt.rcParams['figure.figsize']=(14,7)
plt.figure(dpi=100)

# PDF 概率密度函数
plt.bar(x=np.arange(20),height=(stats.binom.pmf(np.arange(20),p=0.5,n=20)),width=0.75,alpha=0.75)
#n是次数,p是概率

# CDF累计概率密度函数
plt.plot(np.arange(20),stats.binom.cdf(np.arange(20),p=.5,n=20),color="#fc4f30")

# 补充图设置:LEGEND、TICKS与TITLE
plt.text(x=4, y=0.5, s="PDF(normed)", alpha = 75, weight="bold", color="#008fd5")
plt.text(x=16, y=0.9, s="CDF", alpha = 75, weight="bold", color="#fc4f30")
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which ='major', labelsize = 18)
plt.axhline(y = 0, color ='black', linewidth = 1.3, alpha = 7)
plt.text(x = -5, y = 1.1, s = "Binomial Distribution - Overview", fontsize = 26, weight = 'bold', alpha = 75)

在这里插入图片描述

P对结果的影响

plt.figure(dpi=100)

# PDF P=0.2
plt.scatter(x=np.arange(21),y=(stats.binom.pmf(np.arange(21),p=0.2,n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),stats.binom.pmf(np.arange(21),p=.2,n=20))

# PDF P=0.5
plt.scatter(x=np.arange(21),y=(stats.binom.pmf(np.arange(21),p=0.5,n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),stats.binom.pmf(np.arange(21),p=.5,n=20))

# PDF P=0.9
plt.scatter(x=np.arange(21),y=(stats.binom.pmf(np.arange(21),p=0.9,n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),stats.binom.pmf(np.arange(21),p=.9,n=20))

# LEGEND、TICKS与TITLE
plt.text(x=3, y=0.15, s="$p = 0.2$", alpha = 75, weight="bold", color="#008fd5")
plt.text(x=9, y=0.1, s="$p = 0.5$", alpha = 75, weight="bold", color="#fc4f30")
plt.text(x=18, y=0.15, s="$p = 0.9$", alpha = 75, weight="bold", color="#fc4f30")
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which ='major', labelsize = 18)
plt.axhline(y = 0, color ='black', linewidth = 1.3, alpha = 7)
plt.text(x = -2.5, y =0.32, s = "Binomial Distribution - $p$", fontsize = 26, weight = 'bold', alpha = 75)

在这里插入图片描述

N对结果的影响

plt.figure(dpi=100)

# PDF N=10
plt.scatter(x=np.arange(11),y=(stats.binom.pmf(np.arange(11),p=0.5,n=10)),alpha=0.75,s=100)
plt.plot(np.arange(11),stats.binom.pmf(np.arange(11),p=.5,n=10))

# PDF N=15
plt.scatter(x=np.arange(16),y=(stats.binom.pmf(np.arange(16),p=0.5,n=15)),alpha=0.75,s=100)
plt.plot(np.arange(16),stats.binom.pmf(np.arange(16),p=.5,n=15))

# PDF N=20
plt.scatter(x=np.arange(21),y=(stats.binom.pmf(np.arange(21),p=0.5,n=20)),alpha=0.75,s=100)
plt.plot(np.arange(21),stats.binom.pmf(np.arange(21),p=.5,n=20))

# LEGEND、TICKS与TITLE
plt.text(x=2, y=0.2, s="$N = 10$", alpha = 75, weight="bold", color="#008fd5")
plt.text(x=7, y=0.225, s="$N = 15$", alpha = 75, weight="bold", color="#fc4f30")
plt.text(x=10, y=0.2, s="$N = 20$", alpha = 75, weight="bold", color="#fc4f30")
plt.xticks(range(21)[::2])
plt.tick_params(axis = 'both', which ='major', labelsize = 18)
plt.axhline(y = 0, color ='black', linewidth = 1.3, alpha = 7)
plt.text(x = -2.5, y =0.28, s = "Binomial Distribution - $p$", fontsize = 26, weight = 'bold', alpha = 75)

在这里插入图片描述

随机样本

import numpy as np
from scipy.stats import binom

# draw a single sample
np.random.seed(42)
print(binom.rvs(p=0.3,n=10),end="\n\n")

# draw 10 samples
print(binom.rvs(p=0.3,n=10,size=10), end="\n\n")

概率质量函数

from scipy.stats import binom

# additional imoprts for plotting purpose
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams["figure.figsize"] = (14,7)

# relative likelihood of x and y
x=1
y=7
print("pmf(x=1)={}\npmf(x=7)={}".format(binom.pmf(k=x,p=0.3,n=10),binom.pmf(k=y,p=0.3,n=10)))

# continuous pdf for the plot
x_s = np.arange(11)
y_s = binom.pmf(x_s,p=0.3,n=10)
plt.scatter(x_s, y_s,s=100);

在这里插入图片描述

from scipy.stats import binom

# probabolity of x less or equal 0.3
print("P(X<0.3)={}".format(binom.cdf(k=0.3,p=0.3,n=10)))

# probability of x in [-0.2, +0.2]
print("P(2<X<=8)={}".format(binom.cdf(k=8,p=0.3,n=10)-binom.cdf(k=2,p=0.3,n=10)))

P(X<0.3)=0.02824752489999998
P(2<X<=8)=0.6170735276999999

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

啥都鼓捣的小yao

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

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

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

打赏作者

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

抵扣说明:

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

余额充值