如何从python样本中获得最多68%的费用?

问题描述

假设我有以下从卡方分布中抽取的100,000点样本。

x=np.random.chisquare(10,100000)

我们绘制了不对称的直方图。我们说直方图代表概率。

我希望获得68%的概率最高的样品。或者,通常如何以最大的概率获得N%的样本?注意,当N趋于零时,我们将得到模式/最大值/最大似然点。 请帮忙。 附言我不是在寻找分位数/百分位数,如果分布/直方图是不对称的,那么分位数/百分位数将不会给样本部分带来最高的概率。

解决方法

我能想到的最幼稚的解决方案是拟合卡方分布,评估每个样本的密度,并获取前k个样本,其中k是您数据集的N'th部分。

from math import floor
import numpy as np
from scipy.stats import chi2

N = 100000
k = int(floor(0.68 * N))

x = np.random.chisquare(10,N)

dist = chi2.fit(x)

top_k = x[np.argsort(chi2.pdf(x,*dist))][::-1][:k]