python3 概率论 作业

原文链接: python3 概率论 作业

上一篇: python 概率统计

下一篇: python3 scipy stats 使用 常见分布的操作

151333_ykYG_2856757.png

(1)模拟求解和使用分布函数求解的对比,基本一致

from  scipy import stats

X = stats.norm(loc=1.5, scale=0.5)

# p{1.8<x<2.9}
print(X.cdf(2.9) - X.cdf(1.8))

# 模拟求解
cnt = 0
all_num = 100000
for i in range(all_num):
    t = X.rvs()
    # print(t)
    if 2.9 > t > 1.8:
        cnt += 1
print(cnt / all_num)
0.27169798742
0.27318

(2) 直接使用分位函数

X = stats.norm(loc=1.5, scale=0.5)
print(X.ppf(0.95))
2.32242681348

(3)

X = stats.norm(loc=0, scale=1)
Y = stats.norm(loc=0, scale=2)
Z = stats.norm(loc=0, scale=4)

t = np.arange(-5, 5, 0.01)
pl.plot(t, X.pdf(t), label="$X$", color="red")
pl.plot(t, Y.pdf(t), label="$Y$", color="blue")
pl.plot(t, Z.pdf(t), label="$Z$", color="yellow")

pl.show()

153714_o7GA_2856757.png

X = stats.norm(loc=0, scale=1)
Y = stats.norm(loc=2, scale=1)
Z = stats.norm(loc=-2, scale=1)

t = np.arange(-5, 5, 0.01)
# sns.distplot(X.rvs(size=10000))
# pl.show()
pl.plot(t, X.pdf(t), label="$X$", color="red")
pl.plot(t, Y.pdf(t), label="$Y$", color="blue")
pl.plot(t, Z.pdf(t), label="$Z$", color="yellow")

pl.show()

153823_letm_2856757.png

154022_Anx5_2856757.png

(3) 使用参数为1的指数分布验证中心极限定理

from  scipy import stats
from scipy.stats import expon
from scipy.stats import norm
import pylab as pl
import numpy as np
import seaborn as sns

# 参数为1 的指数分布
e = expon()
print(e.mean(), e.var(), e.std())

d = e.rvs(size=10000)
# 指数分布的概率密度图像
sns.distplot(d, hist=False, color="r", kde_kws={"shade": False})
pl.show()

# 十个指数分布的随机变量和的概率密度图像
all_num = 100
# 只需要加n-1次
for i in range(all_num-1):
    d += e.rvs(size=10000)
sns.distplot(d, hist=False, color="g", kde_kws={"shade": False})

print(norm.fit(d))
# 理论值
print(all_num, all_num ** 0.5)
pl.show()

n=10
161437_7AQJ_2856757.png

161651_a6W2_2856757.png

(9.9733002779022275, 3.1794247621538174)
10 3.1622776601683795

n=100

161617_BfnN_2856757.png

(99.968901023434967, 9.9684825279139382)
100 10.0

(4) 163702_1XIg_2856757.png

t 分布,红色是标准正态分布,蓝色是t分布

from  scipy import stats
from scipy.stats import expon
from scipy.stats import norm
import pylab as pl
from scipy.stats import t
import numpy as np
import seaborn as sns

# t 分布的颜色和维度关系
colors = {
    'red': 1,
    'black': 5,
    'blue': 10,
    'green': 20,
    'yellow': 40,
}

nm = norm.rvs(size=1000)
for color, n in colors.items():
    d = t.rvs(n, size=1000)
    sns.distplot(d, color='red', hist=False, kde_kws={"shade": False})
    sns.distplot(nm, color='blue', hist=False, kde_kws={"shade": False})

    pl.show()

n=1

164143_QpPO_2856757.png

n=5

164032_1Acp_2856757.png

n=10

164051_llBA_2856757.png

n=20

164109_ecjh_2856757.png

n=40

164123_IUgW_2856757.png

f分布

from  scipy import stats
from scipy.stats import expon
from scipy.stats import norm
import pylab as pl
from scipy.stats import t
from scipy.stats import f
import numpy as np
import seaborn as sns

# t 分布的颜色和维度关系

lst = [
    1, 3, 5, 7, 10, 15, 20
]
for i in lst:
    rv = f(10, i)
    d = rv.rvs(size=1000)
    sns.distplot(d, color='red', hist=False, kde_kws={"shade": False})
    pl.show()

f(10,1)

164709_6d76_2856757.png

f(10,15)

164733_sju1_2856757.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值