有可能通过python中的确切值来获得分位数吗

  • 本文关键字:python 有可能 python quantile
  • 更新时间 :
  • 英文 :


我得到标准正态分布的分位数(例如0.9值(。我用scipy.stats.norm.ppf(0.9, 0, 1)

我需要在自定义数据中找到该值的相应分位数。所以我必须对从scipy.stats.norm.ppf(0.9, 0, 1)得到的值进行四舍五入,然后找到它的分位数。它有专用的软件包功能吗?

我想您正在寻找numpy.quantile:

import numpy as np
from scipy import stats
mean = 0
std = 1
N = 1000
quantile = 0.9
dist = stats.norm(mean, std)
x = dist.rvs(size = N)
data_quantile = np.quantile(x, quantile)
dist_quantile = dist.ppf(quantile)
print(f'The 0.9th quantile of the dataset is {data_quantile}')
#The 0.9th quantile of the dataset is 1.2580295186126398
print(f'The 0.9th quantile of the actual distribution is {dist_quantile}')
#The 0.9th quantile of the actual distribution is 1.2815515655446004

编辑

然而,我可能误解了,在重读之后,我想知道你是否真的想这样做:

def get_effective_quantile(dataset, distribution, quantile):
dist_quantile = distribution.ppf(quantile)
effective_quantile = sum(dataset <= dist_quantile) / len(dataset)
return(effective_quantile)
print(f'The effective quantile of {dist_quantile} in the dataset is {get_effective_quantile(x, dist, quantile)}')
#The effective quantile of 1.2815515655446004 in the dataset is 0.904

我不知道有哪个包或函数能做到这一点,但上面的函数非常简单,似乎比你目前根据描述所做的更简单、更健壮。

最新更新