当前位置: 首页 > 知识库问答 >
问题:

如何在Python中获得给定样本值的概率?

龙正初
2023-03-14
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?

共有1个答案

冯福
2023-03-14

如前所述,在连续分布中,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落在w周围的一个宽度w的小区域中的概率接近1.3/w。选择w=0.1,则得到1.3/0.1或约13%。

 类似资料:
  • 问题内容: 对于以下示例: 有什么办法可以跳过第二个if语句?只是为了告诉计算机返回布尔值的相反值? 问题答案: 您可以使用:

  • 问题内容: 我想找出以下内容:给定日期(对象),星期几是几号? 例如,星期日是第一天,星期一:第二天..依此类推 然后,如果输入的内容类似于今天的日期。 例 输出可能是6(因为它是星期五) 问题答案: 使用: 从文档中: 以整数返回星期几,其中星期一为0,星期日为6。

  • 问题内容: 为简单起见,这是我要执行的操作的简化版本: 我知道如何在PHP中执行此操作: 有什么办法吗? 问题答案: 如果是全局变量,则可以执行以下操作: 关于各种“ eval”解决方案的说明:你应谨慎使用eval,特别是如果要评估的字符串来自可能不受信任的来源-否则,你可能最终会删除磁盘的全部内容或类似内容如果给你一个恶意字符串。 (如果它不是全局的,那么你将需要访问其定义在其中的任何名称空间。

  • 问题内容: 如果使用打开图像,假设我具有像素的坐标,如何获得像素的RGB值? 那么,我该怎么做呢?从空白图形开始,“写入”具有一定RGB值的像素? 如果我不必下载任何其他库,我会希望。 问题答案: 最好使用Python图像库来执行此操作,恐怕这是单独下载的。 执行所需操作的最简单方法是通过Image对象上的load()方法,该方法返回一个像素访问对象,您可以像数组一样对其进行操作: 或者,查看Im

  • 问题内容: 让我解释一下自己。通过知道日期的星期数和年份: 但是现在我不知道如何获取该周第一天的日期。我一直在寻找Calendar,Date,DateFormat,但没有什么可能有用的… 有什么建议吗?(使用Java) 问题答案: 这些字段不返回值。这些是 常量,标识可以获取/设置/添加的对象中的字段。要实现所需的功能,您首先需要获取一个,将其清除并设置已知值。它将自动将日期设置为该周的第一天。

  • 我需要使用获得给定日期后的下周五13号。 如何实施?