根据随机变量值的样本,我使用核密度估计创建累积密度函数。
cdf = gaussian_kde(sample)
我需要的是生成密度函数等于构造cdf的随机变量的样本值。我知道反转概率分布函数的方法,但由于我无法在分析中进行,因此需要相当复杂的准备工作。有集成解决方案还是其他方式来完成任务?
答案 0 :(得分:0)
如果您使用具有高斯核的核密度估计器(KDE),则您的密度估计是高斯混合模型。这意味着密度函数是“混合分量”的加权和,其中每个混合分量是高斯分布。在典型的KDE中,混合组件以每个数据点为中心,每个组件都是内核的副本。这种分布很容易从不使用逆CDF方法进行采样。程序如下:
设置
mu
成为向量,其中mu[i]
是混合成分i
的平均值。在KDE中,这只是原始数据点的位置sigma
成为向量,其中sigma[i]
是混合成分i
的标准偏差。在典型的KDE中,这将是内核带宽,它为所有点共享(但确实存在可变带宽变体)。w
为向量,其中w[i]
包含混合成分i
的权重。权重必须为正且总和为1.在典型的未加权KDE中,所有权重都为1/(number of data points)
(但加权变量确实存在)。选择要抽样的随机点数n_total
确定从每个混合成分中抽取多少个点。
n
成为一个向量,其中n[i]
包含从混合成分i
中抽样的点数。n
,其中“试验次数”等于n_total
,“成功概率”等于w
。这意味着将从每个混合物组分中抽取的点数随机选择,与组分重量成比例。绘制随机值
i
:n[i]
和标准差mu[i]
sigma[i]
个值
随机输入值列表随机顺序。
此过程相对简单,因为多项式和正态分布的随机数生成器(RNG)可广泛使用。如果你的内核不是高斯分布,而是其他概率分布,你可以复制这个策略,用步骤4中的正常RNG替换该分布的RNG(如果它可用)。您也可以使用此程序从混合模型中进行采样,而不仅仅是KDE。