【问题标题】:how to get the probability of a value given samples in python?如何在python中获取给定样本的值的概率?
【发布时间】:2020-09-03 19:48:26
【问题描述】:

我提到了这个帖子: https://stackoverflow.com/questions/38141951/why-does-scipy-norm-pdf-sometimes-give-pdf-1-how-to-correct-it

但我还是有些困惑
import scipy.stats as stats
x = np.array([ 0.7972,  0.0767,  0.4383,  0.7866,  0.8091,
               0.1954,  0.6307,  0.6599,  0.1065,  0.0508])

print('mean:', x.mean())  # 0.45511999999999986
print('std', x.std())  # 0.30346538451691657

y = stats.norm.pdf(x, mean, std)
plt.plot(x, y, c='b')
plt.show()

这意味着平均值的概率是 131%?
给定一个点以及如何计算一个值的概率?这可能吗?

添加我的情况:
我知道在连续变量中,任何点的概率都是 0。
但是,我的用户问我数据中 100 的概率是多少,我如何量化 100?

【问题讨论】:

标签: python scipy


【解决方案1】:

如前所述,x 为 100 的概率在连续分布中为 0。要问的正确问题是“x 在 99.5 和 100.5 之间的概率”。这可以通过减去区间两端的cdf来计算。它也等于该区间曲线下方的面积:

from matplotlib import pyplot as plt
import numpy as np
import scipy.stats as stats

x = np.array([0.7972, 0.0767, 0.4383, 0.7866, 0.8091,
              0.1954, 0.6307, 0.6599, 0.1065, 0.0508])

mean = x.mean()
std = x.std()
print('mean:', mean)  # 0.45511999999999986
print('std', std)  # 0.30346538451691657

val = 0.4
eps = 0.05
prob_close_to_val = stats.norm.cdf(val + eps, mean, std) - stats.norm.cdf(val - eps, mean, std)
print(f"probability of being close to {val}: {prob_close_to_val * 100:.2f} %")
# probability of being close to 0.5: 12.95 %

xs = np.linspace(mean - std * 3, mean + std * 3, 200)
ys = stats.norm.pdf(xs, x.mean(), x.std())
plt.plot(xs, ys, c='b')
plt.fill_between(xs, 0, ys, where=(xs >= val - eps) & (xs <= val + eps), color='r', alpha=0.3)
plt.ylim(ymin=0)
plt.margins(x=0)
plt.show()

解释y轴上1.3的值:x落在x=0.5周围一个宽度为w的小区域的概率接近1.3/w。选择w=0.1 则得到1.3/0.1 或大约13%。

【讨论】:

  • 你很专业。感谢您添加代码来说明概念
【解决方案2】:

您正在使用的函数计算概率密度函数在平均值处的值,即在高斯峰值处。

概率密度函数的整数为1。这并不意味着概率密度函数的值一定总是小于1。

【讨论】:

    【解决方案3】:

    y 是概率 密度 函数,x 是连续变量,连续域中任何值的概率为 0。该值(通常为 pdf)对于连续域是值位于区间(mean-dx/2, mean+dx/2) 的概率约为1.314622*dx,假设dx 很小(在极限dx-&gt;0 中它们变得相等)。实际上,您可以在其中心拥有一个具有无限值的 delta 函数作为您的 pdf(只要 pdf 下的面积总和为 1)。更多信息可以查看维基百科:https://en.wikipedia.org/wiki/Probability_density_function

    您应注意不要将其与离散随机变量的概率质量函数混淆,该函数表示变量等于某个值的概率。

    【讨论】:

      猜你喜欢
      • 2016-12-07
      • 1970-01-01
      • 2020-12-05
      • 2020-08-07
      • 1970-01-01
      • 2016-03-15
      • 2021-01-08
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多