统计学学习

实践-python简单实现概率分布

2019-12-01  本文已影响0人  HenlyX

作业链接:

https://mp.weixin.qq.com/s/YtAicIlJIvPT4DHayjc5dg

前言:

在代码动手练习前,先补充2个概念

概率质量函数:描述离散数据,由mass翻译过来的,可以理解为离散型数据是块状物体,物体是有质量,所以叫做概率质量函数。为离散型直方图缩写为PMF。

概率密度函数:描述连续性数据。就是落在某个区间内的概率多大。这个就像液体,液体是连续的。同等体积有些液体重有些液体轻,用密度这个词描述会更合适。缩写为PDF。

另外,在做伪造随机分布试验时,最好size参数设置大点,避免结果波动较大。

实现:

公共部分

import matplotlib.pyplotas plt

from pylabimport mpl

import numpyas np

from scipyimport stats

plt.rcParams['font.sans-serif'] = ['FangSong']#指定画图时编码,以免中文乱码

plt.rcParams['axes.unicode_minus'] =False

离散型变量

1.伯努利分布

#伯努利分布

x = [0,1]

p0 =0.5

p = [p0,1-p0]

plt.bar(x, p)

plt.xlabel("事件")

plt.ylabel("概率")

plt.title("伯努利分布概率分布")

plt.show()

2.二项分布

#二项分布

p =0.3

n =3

k = np.arange(0, n+1)

binomial = stats.binom.pmf(k, n, p)

plt.bar(k, binomial)

plt.xlabel("hit_times")

plt.ylabel("probability")

plt.title("二项分布概率分布")

plt.show()

3.泊松分布

lam=5

x = np.random.poisson(lam =lam,size =1000)

plt.hist(x,bins =100)

plt.title("泊松分布概率分布")

plt.show()

4.均匀分布

def func_p_avg(x):

return 1/(x.max() - x.min())

x = np.arange(1,10)

y = [func_p_avg(x)] *len(x)

plt.plot(x, y)

plt.title("均匀分布概率分布")

plt.show()

连续型变量

1.正态分布

mu =0.0

sigma =1.0

x = np.arange(-10,10,0.1)

y = stats.norm.pdf(x, mu, sigma)

plt.plot(x,y)

plt.title("正态分布概率分布")

plt.show()

2.BETA分布

a =0.5

b =0.5

x = np.arange(0,1,0.01)

y = stats.beta.pdf(x, a, b)

plt.plot(x, y)

plt.title("beta分布概率分布")

plt.show()

3.实验模拟二项分布与正态分布

伪造上面2000组实验数据

二项分布

X = stats.binom.rvs(n,p,size=2000)# 伪造符合二项分布的随机变量 (random variates)

plt.hist(X,normed=True)#作出上面满足二项分布随机变量的频率分布直方图 不指定参数时统计的为频数分布

plt.title("模拟二项分布概率分布")

plt.show()

正态分布

# 伪造符合正态分布的随机变量X

# 通过loc和scale参数可以指定随机变量的偏移和缩放参数。对于正态分布的随机变量来说,这两个参数相当于指定其期望值和标准差:

X = stats.norm.rvs(loc=1.0,scale=2.0,size=1000)

#⑨作出上面正态分布随机变量的频率分布直方图

plt.hist(X,normed=True,histtype='stepfilled',alpha=0.2)

plt.legend(loc='best',frameon=False)

plt.title("模拟正态分布概率分布")

plt.show()

上一篇 下一篇

猜你喜欢

热点阅读