python - 如果我们将概率密度函数数据作为 x 和 y 计算百分位数

标签 python probability distribution kde percentile

我有从 pdf 图中提取的数据,其中 x 表示孵化时间,y 是 csv 文件中的密度。我想计算百分位数,例如 95%。我有点困惑,我应该只使用 x 值来计算百分位数,即使用 np.precentile(x, 0.95) ?

图中的数据:
enter image description here

最佳答案

这是一些使用 np.trapz 的代码(由@pjs 提出)。我们采用 x 和 y 数组,假设它是 PDF,所以首先我们将其归一化为 1,然后开始向后搜索直到我们达到 0.95 点。
我已经编造了一些多峰函数

import numpy as np
import matplotlib.pyplot as plt

N = 1000

x = np.linspace(0.0, 6.0*np.pi, N)
y = np.sin(x/2.0)/x # construct some multi-peak function
y[0] = y[1]
y = np.abs(y)

plt.plot(x, y, 'r.')
plt.show()

# normalization
norm = np.trapz(y, x)
print(norm)

y = y/norm
print(np.trapz(y, x)) # after normalization

# now compute integral cutting right limit down by one
# with each iteration, stop as soon as we hit 0.95
for k in range(0, N):
    if k == 0:
        xx = x
        yy = y
    else:
        xx = x[0:-k]
        yy = y[0:-k]
    v = np.trapz(yy, xx)
    print(f"Integral {k} from {xx[0]} to {xx[-1]} is equal to {v}")
    if v <= 0.95:
        break

关于python - 如果我们将概率密度函数数据作为 x 和 y 计算百分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62423375/

相关文章:

python - 使用有序字典解析 xml 文件

math - 计算联合分布的一部分的概率

android - 哪个android sdk版本要发布到市场?

python - 生成二项式分布的混合

python - 跟踪由 Cython 包装的 C++ 中分配的内存使用情况

python - 将嵌套字典替换为空数据帧

statistics - 如何根据少量证据有效地估计概率?

iphone - iOS 配置文件错误

python : summation over all permutations

python ,SimPy : How to generate a value from a triangular probability distribution?