Cha*_*hai 5 distribution kernel-density julia
我试图使用Julia估计使用N个观察数据点(存储为Float64数字数组)的连续单变量分布,然后从该估计分布中进行采样.我没有先前的知识限制对某些发行家族的关注.
我正在考虑使用KernelDensity包来估计分布,但我不确定如何从结果输出中进行采样.
任何帮助/提示将不胜感激.
对估计分布没有任何限制,自然候选者将是经验分布函数(参见维基百科).对于这种分布,有关于收敛到实际分布的非常好的定理(参见Dvoretzky-Kiefer-Wolfowitz不等式).
通过这种选择,采样特别简单.如果dataset是当前样本的列表,则dataset[rand(1:length(dataset),sample_size)]是来自经验分布的一组新样本.使用Distributions包,它可以更具可读性,如下所示:
using Distributions
new_sample = sample(dataset,sample_size)
Run Code Online (Sandbox Code Playgroud)
最后,核密度估计也很好,但可能需要选择一个参数(内核及其宽度).这显示了对某个分布族的偏好.从内核分布中抽样与从经验分布中抽样惊人地相似:1.从经验分布中选择样本; 2.使用来自核函数的样本扰动每个样本.
例如,如果核函数是宽度的正态分布w,那么扰动的样本可以计算为:
new_sample = dataset[rand(1:length(dataset),sample_size)]+w*randn(sample_size)
Run Code Online (Sandbox Code Playgroud)