1.2数据的分布(day3)

文章展示了如何使用Scipy库处理概率分布,包括离散型的二项分布和连续型的正态分布。通过计算故障率、概率质量函数、累积分布函数(CDF)、概率密度函数(PDF)以及生存函数等,阐述了Scipy在统计分析中的应用,并演示了正态分布和t分布的随机数生成及分布特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Scipy各种概率分布的核心对比图

 

1.2.1离散型分布

#3人分别负责30台发生故障不能修理的概率
p30=st.binom.sf(k=1,p=0.01,n=30)*3
#3人共同负责90台发生故障不能修理的概率
p90=st.binom.sf(k=3,p=0.01,n=90)

#使用pmf函数计算离散型随机变量的概率质量函数。


###下面两种计算方式的效果相同,pmf函数计算离散型随机变量的概率质量函数。
p30_1=(1-(st.binom.pmf(k=0,p=0.01,n=30)+st.binom.pmf(k=1,p=0.01,n=30)))*3
#cdf计算累积分布函数的值
p30_2=(1-st.binom.cdf(k=1,p=0.01,n=30))*3
p30_1,p30_2

1.2.2连续型分布

import scipy.integrate as integ

#构建服从正态分布的概率密度函数的值,均值mu为1,标准差sigma为0.5
x = np.arange(-2,4,0.01)
#根据x计算正态分布的概率密度函数
n_density = (1/(((2*np.pi)**0.5)*0.5))*np.exp((-(x-1)**2)/(2*(0.5**2)))#第1个公式f(x)
#正态分布的密度函数曲线,后面还有更具体的图形例子
print('正态分布概率密度函数曲线(均值:1,标准差:0.5):')
plt.plot(x,n_density)
plt.show()

#累积分布函数的计算,设x0=1.5,则F(x0)=P(x<1.5)
#即求概率密度函数f(x)在(-Inf,1.5]区间的积分
def nf(x,mu,sigma):
    return (1/(((2*np.pi)**(0.5))*sigma))*np.exp((-(x-mu)**2)/(2*(sigma**2)))

#累积分布函数是对概率密度函数求积分(针对连续型随机变量,离散型随机变量是求和)
n_distrib = integ.quad(nf,float('-Inf'),1.5,args=(1,0.5))[0]#第二个公式F(x)的实现
print('\n手工计算分布函数的值:', n_distrib)


#直接调用Scipy的累积分布函数
n_distrib_scipy = st.norm.cdf(1.5,1,0.5)
print('\nScipy函数计算正态分布的累积分布函数的值:', n_distrib_scipy)

#Scipy有关概率分布的其他应用
print('\n服从正态分布的随机数生成:',st.norm.rvs(1,0.5,5))


print('\n概率密度函数(显示前10个):',st.norm.pdf(x,0.5,1)[0:10])
print('\n生存函数:',st.norm.sf(1.5,1,0.5))# sf=1-cdf
print('\n分位数函数:',st.norm.ppf(0.84,1,0.5))#注意:通常都是通过下分位数(下尾)计算分位数。

#该分布下随机变量有95%的可能性位于该区间
print('\n置信度0.95的置信区间:',st.norm.interval(0.95,1,0.5))

#t分布

import scipy.special as ss
#t分布的概率密度函数
def tf(x,d):
    return  ss.gamma((d+1)/2)*((1+(x**2)/d)**(-(d+1)/2))/((d*np.pi)**0.5*ss.gamma(d/2))
d=2
x = np.arange(-4,4,0.01)
t = ss.gamma((d+1)/2)*((1+(x**2)/d)**(-(d+1)/2))/((d*np.pi)**0.5*ss.gamma(d/2))
plt.figure(figsize=(8,6))
plt.plot(x,t)
plt.show()

#手工计算的概率密度函数和分布函数的值。
print('t分布概率密度函数的值(x0=2,df=2):',tf(2,2))
#求概率密度函数的积分即可求出分布函数的值。
print('\nt分布在x0=1.5处的累积分布函数值:',integ.quad(tf,float('-Inf'),1.5,args=(2))[0])

#通过Scipy函数计算二者的值,其他函数的调用和前面正态分布类似,只不过t多了一个自由度参数。
print('\n使用Scipy计算概率密度函数值:',st.t.pdf(2,2))
print('\n使用Scipy计算累积分布函数值:',st.t.cdf(1.5,2))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

封印师请假去地球钓鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值