我们真的可以从连续分布(Scipy 函数)中采样吗?这意味着什么?

机器算法验证 可能性 采样 随机变量 连续数据 scipy
2022-03-02 08:12:21

我已经看到了这个答案:从连续分布中采样单个值在逻辑上是如何可能的?,但对我来说仍然不是很清楚。

在 Scipy 中,有一个scipy.stats.norm.rvs()从正态分布中采样的函数。

我试图了解它是如何工作的,想象“在引擎盖下”我们实际上是从某个任意粒度级别的离散随机变量中采样的。

但是,我们的教授解释说,我们总是可以从连续分布中采样值,并且“密度表示不同值的范围以及它们发生的相关可能性”。

是一个连续的 RV,那么,我很难将该陈述与事实相协调XP(X=x)=0

如果,PDF 的密度值如何给出一个值或值范围出现的可能性?我错过了什么?P(X=x)=0

2个回答

在实践中,从连续分布中采样的函数最多只能采样到某种程度的准确度。例如,如果我们在单位间隔上从均匀采样,通常会发生一种算法,它可以在一些(非常大的)整数范围(比如)上均匀采样,并且这些可以通过除以中的数字。所以你可以看到但看不到介于两者之间的值。0,1,...,m1[0,1)mn/m(n1)/m(n+1)/m

如果您将这些离散值视为表示范围内的值(在某种意义上“代表”,那么在某种意义上,采样值可能是被视为代表真正连续值的区间;虽然一旦您开始转换这些考虑因素会变得更加复杂,但在许多情况下,可以通过此类转换跟踪间隔的端点并根据需要维护该过程。n/m[n/m,(n+1)/m)

请注意,您的教授的评论似乎不是在谈论通常会做什么,而是在谈论我们可以做什么。在这种情况下,whuber 在链接帖子上的评论是相关的:

一种(低效)方法是独立生成每个连续的二进制数字,直到该数字对于计算而言足够精确。

一种看待它的方法是,我们可以(和以前一样)将任何当前表示视为值区间的代理,但是当我们需要它们时,我们可以根据需要生成尽可能多的附加数字。在那种情况下,一个给定的生成值总是只生成了一部分;当需要精度时,可以进行更精确的生成过程。

实际上,我们对连续量的所有表示(不仅在随机生成中,而且在任何测量中)的准确性都是有限的;通常这不会对我们将连续变量作为我们正在做的事情的合适模型的概念造成任何损害。

您是正确的,随机数生成器实际上是从离散的、粒度分布中采样的。浮点数只有有限精度(8 位、16 位等),计算机只能生成指定精度内的浮点数。生成一个真正随机的完整实变量需要指定无限量的信息,而且不是必需的——有限精度的结果,小心,足够精确。