如何解决如何在python中找到给定范围内的值的百分比?
问题陈述 - 变量 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 将是具有 99.7% 值的 3 个标准差。
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),ls='--')
axs[1].set(
title='CDF'
)
plt.show()
所以,我们想要的值是那个面积,我们可以计算为
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%
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。