【问题标题】:Generating random value for given cdf为给定的 cdf 生成随机值
【发布时间】:2016-06-11 20:03:49
【问题描述】:

根据随机变量值的样本,我使用核密度估计创建累积密度函数。

cdf = gaussian_kde(sample)

我需要的是生成密度函数等于构造的 cdf 的随机变量的样本值。我知道反转概率分布函数的方法,但由于我无法进行分析,因此需要非常复杂的准备工作。是否有集成解决方案或其他方式来完成任务?

【问题讨论】:

  • pdf 也可用吗?
  • @Willem Van Onsem 如果您的意思是概率密度函数(理论),它不可用。 cdf 是它的估计

标签: python random-sample cdf


【解决方案1】:

如果您将核密度估计器 (KDE) 与高斯核一起使用,则您的密度估计是高斯混合模型。这意味着密度函数是“混合分量”的加权和,其中每个混合分量都是高斯分布。在典型的 KDE 中,有一个以每个数据点为中心的混合组件,每个组件都是内核的副本。这种分布很容易从不使用逆 CDF 方法进行采样。过程如下:

  1. 设置

    • mu 是一个向量,其中mu[i] 是混合分量i 的平均值。在 KDE 中,这只是原始数据点的位置
    • sigma 是一个向量,其中sigma[i] 是混合分量i 的标准差。在典型的 KDE 中,这将是所有点共享的内核带宽(但确实存在可变带宽变体)。
    • w 是一个向量,其中w[i] 包含混合分量i 的权重。权重必须为正且总和为 1。在典型的未加权 KDE 中,所有权重均为 1/(number of data points)(但确实存在加权变体)。
  2. 选择要采样的随机点数,n_total

  3. 确定将从每个混合成分中抽取多少点。

    • n 成为一个向量,其中n[i] 包含要从混合分量i 中采样的点数。
    • 从“试验次数”等于n_total 和“成功概率”等于w 的多项分布中得出n。这意味着从每个混合成分中抽取的点数将随机选择,与成分权重成正比。
  4. 绘制随机值

    • 对于每个混合物成分i
    • 从均值mu[i]和标准差sigma[i]的正态分布中绘制n[i]
  5. 打乱随机值列表,使其具有随机顺序。

此过程相对简单,因为用于多项式和正态分布的随机数生成器 (RNG) 已广泛使用。如果您的内核不是高斯分布而是其他概率分布,您可以复制此策略,将步骤 4 中的正常 RNG 替换为该分布的 RNG(如果可用)。您还可以使用此过程从一般混合模型中采样,而不仅仅是 KDE。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2023-02-04
    • 2015-05-18
    • 2011-05-15
    相关资源
    最近更新 更多