如何在python中查找给定范围内的值百分比?
问题陈述-变量X的平均值为15,标准偏差为2 介于8和17之间的X值的最小百分比是多少 我知道68-95-99.7经验法则。我在谷歌上发现,1.5标准差范围内的数值百分比为86.64%。 到目前为止,我的代码是:如何在python中查找给定范围内的值百分比?,python,numpy,scipy.stats,Python,Numpy,Scipy.stats,问题陈述-变量X的平均值为15,标准偏差为2 介于8和17之间的X值的最小百分比是多少 我知道68-95-99.7经验法则。我在谷歌上发现,1.5标准差范围内的数值百分比为86.64%。 到目前为止,我的代码是: import scipy.stats import numpy as np X=np.random.normal(15,2) 据我所知 13-17在1个标准偏差范围内,具有68%的值 9-21为3个标准偏差,其值为99.7% 7-23是4个标准偏差。所以8比平均值低3.5个标准差 如
import scipy.stats
import numpy as np
X=np.random.normal(15,2)
据我所知
13-17在1个标准偏差范围内,具有68%的值
9-21为3个标准偏差,其值为99.7%
7-23是4个标准偏差。所以8比平均值低3.5个标准差
如何找到从8到17的值的百分比?您基本上想知道概率密度函数(PDF)下从x1=8到x2=17的面积 你知道PDF的面积是整数,所以它是累积密度函数(CDF) 因此,要找到x的两个特定值之间的区域,需要将这些值之间的PDF积分,这相当于做CDF[x2]-CDF[x1] 因此,在python中,我们可以
import numpy as np
import scipy.stats as sps
import matplotlib.pyplot as plt
mu = 15
sd = 2
# define the distribution
dist = sps.norm(loc=mu, scale=sd)
x = np.linspace(dist.ppf(.00001), dist.ppf(.99999))
# Probability Density Function
pdf = dist.pdf(x)
# Cumulative Density Function
cdf = dist.cdf(x)
并计划看一看
fig, axs = plt.subplots(1, 2, figsize=(12, 5))
axs[0].plot(x, pdf, color='k')
axs[0].fill_between(
x[(x>=8)&(x<=17)],
pdf[(x>=8)&(x<=17)],
alpha=.25
)
axs[0].set(
title='PDF'
)
axs[1].plot(x, cdf)
axs[1].axhline(dist.cdf(8), color='r', ls='--')
axs[1].axhline(dist.cdf(17), color='r', ls='--')
axs[1].set(
title='CDF'
)
plt.show()
如果有人愿意回复,我将不胜感激。看看如何为你的
X=np.random.normal(15,2)
添加第三个参数,它对应于大量样本,然后计算高于和低于平均值+/-许多标准偏差。
cdf_at_8 = dist.cdf(8)
cdf_at_17 = dist.cdf(17)
cdf_between_8_17 = cdf_at_17 - cdf_at_8
print(f"{cdf_between_8_17:.1%}")