首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中找到给定范围内的值的百分比?

如何在python中找到给定范围内的值的百分比?
EN

Stack Overflow用户
提问于 2021-02-01 01:27:50
回答 1查看 693关注 0票数 0

问题陈述-变量X的平均值为15,标准差为2。

介于8和17之间的X值的最小百分比是多少?

我知道68-95-99.7的经验法则。我在谷歌上发现,1.5标准差以内的值的百分比为86.64%。到目前为止,我的代码如下:

代码语言:javascript
复制
import scipy.stats
import numpy as np
X=np.random.normal(15,2)

据我所知,

13-17在具有68%值的1个标准偏差内。

9-21将是具有99.7%值的3个标准差。

7-23是4个标准差。所以8比平均值低3.5标准差。

如何找到从8到17的值的百分比?

EN

回答 1

Stack Overflow用户

发布于 2021-03-27 21:39:56

你基本上想知道从x1=8到x2=17的概率密度函数(PDF)下的面积。

你知道PDF的面积是积分,所以它是累积密度函数(CDF)。

因此,要找到x的两个特定值之间的面积,您需要对这两个值之间的PDF进行积分,这相当于做CDFx2 - CDFx1。

所以,在python中,我们可以这样做

代码语言:javascript
复制
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)

然后密谋去看一看

代码语言:javascript
复制
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()

因此,我们想要的值是面积,我们可以计算为

代码语言:javascript
复制
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%}")

这就给了84.1%

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65982154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档