julia - 在 Julia 中估计概率分布并从中采样

标签 julia distribution kernel-density

我正在尝试使用 Julia 使用 N 个观察到的数据点(存储为 Float64 数字的数组)来估计连续单变量分布,然后从此估计分布中采样。我没有将注意力限制在某些分布系列上的先验知识。

我正在考虑使用 KernelDensity 包来估计分布,但我不确定如何从结果输出中进行采样。

任何帮助/提示将不胜感激。

最佳答案

对估计分布没有任何限制,自然候选者将是经验分布函数(参见 Wikipedia)。对于这个分布,有关于收敛到实际分布的非常好的定理(见 Dvoretzky–Kiefer–Wolfowitz inequality)。

有了这个选择,采样就特别简单了。如 dataset是当前样本的列表,然后 dataset[rand(1:length(dataset),sample_size)]是一组来自经验分布的新样本。使用 Distributions 包,它可能更具可读性,如下所示:

using Distributions
new_sample = sample(dataset,sample_size)

最后,核密度估计也不错,但可能需要选择一个参数(核及其宽度)。这显示了对某个分布系列的偏好。从核分布中采样与从经验分布中采样惊人地相似: 1. 从经验分布中选择一个样本; 2. 使用来自核函数的样本扰乱每个样本。

例如,如果核函数是宽度为 w 的正态分布,那么扰动样本可以计算为:
new_sample = dataset[rand(1:length(dataset),sample_size)]+w*randn(sample_size)

关于julia - 在 Julia 中估计概率分布并从中采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40134937/

相关文章:

julia - 如何在 Julia 中创建一个数组?

c - 等价于 Julia 语言中的 C 编程语法 "#define"

带有单个 .exe 的 .Net,无需安装 .NET Framework

ios - xcode 4.2:“为企业分发”按钮在哪里?

python - 整合二维核密度估计

python - 如何比较R中两个向量的分布?

julia - Julia 中具有评估/计算属性的结构

julia - 在 Julia 中初始化锯齿状数组

javascript - 使用 Three.js 重新划分椭圆体 PointCloud 中的点

r - 从R中的内核密度估计获取值