scipy.stats连续分布的基本操作

2020-07-30 14:28:09 浏览数 (2)

代码语言:javascript复制
#本节内容为连续分布
import numpy as np
import scipy.stats as st
import matplotlib.pyplot as plt

#pdf 概率密度
#cdf 累积概率
#sf:残存函数(1-cdf)
#ppf百分比(累积概率的反函数),分位数函数
#stats:返回均值,方差
print(st.norm.stats())#标准化的分布的随机变量X可以通过变换(X-loc)/scale获得
>>(array(0.), array(1.))
print(st.norm(loc = 3, scale = 4,).stats())
>>(array(3.), array(16.))
#产生一个随机变量列,使用size关键字参数
print(st.norm.rvs(size=5))
>>[ 3.3544813   0.0967313  -1.02310185 -0.45073826 -0.79438458]#标准正态分布零的概率

print('标准正态分布零的概率:')print(st.norm.pdf(0).round(4))
>>标准正态分布零的概率:>>0.3989
print(st.norm.pdf([-1,0,1]).round(4))>>[0.242  0.3989 0.242 ]
#标准正态分布累计的概率print('标准正态分布累计分布到零的概率:')
print(st.norm.cdf(0).round(4))>>标准正态分布累计分布到零的概率:>>0.5
print(st.norm.cdf([-1,0,1]).round(4))>>[0.1587 0.5    0.8413]
#标准正态分布小于1的概率print('标准正态分布大于1的概率')
print(st.norm.sf(1).round(4))>>标准正态分布大于1的概率>>0.1587
print(st.norm.sf([-1,0,1]).round(4))>>[0.8413 0.5    0.1587]
#标准正态分布几倍std的概率
print('标准正态分布几倍std的概率:')
probility_1std=st.norm.cdf(1)-st.norm.cdf(-1)print(probility_1std.round(4))
probility_2std=st.norm.cdf(2)-st.norm.cdf(-2)
print(probility_2std.round(4))
probility_3std=st.norm.cdf(3)-st.norm.cdf(-3)
print(probility_3std.round(4))>>标准正态分布几倍std的概率:>>0.6827>>0.9545>>0.9973
#标准正太分布的Q1,Q2,Q3
print('标准正太分布的Q1,Q2,Q3:')
print(st.norm.ppf(0.25,0,1).round(4))
print(st.norm.ppf(0.5,0,1).round(4))
print(st.norm.ppf(0.75,0,1).round(4))
代码语言:javascript复制
>>标准正太分布的Q1,Q2,Q3:>>-0.6745>>0.0>>0.6745
#均值为 3, 标准差为1,累计分布到 3 的概率
print('均值为 3, 标准差为1,累计分布到 3 的概率:')
print(st.norm(3,1).cdf(3))
>>均值为 3, 标准差为1,累计分布到 3 的概率:>>0.5
#均值为 3, 标准差为 1, 累计概率为 0.5 的反函数值,#通过这个函数求分位数
print('均值为 3, 标准差为 1的Q2:')
print(st.norm.ppf(0.5,3,1))
>>均值为 3, 标准差为 1的Q2:>>3.0
#画出正态分布图
x=np.linspace(-4,10,100)
y=st.norm.pdf(x,loc = 3, scale = 4,).round(4)
plt.plot(x,y)
plt.show()

0 人点赞