我试图使用Julia来估计一个连续的单变量分布,使用N个观测数据点(存储为一个Float64数数组),然后从这个估计的分布中抽取样本。我以前没有知识限制对某些分布家庭的关注。
我正在考虑使用KernelDensity包来估计发行版,但我不知道如何从结果输出中取样。
如有任何帮助/建议,将不胜感激。
发布于 2016-10-19 18:45:18
没有任何限制的估计分布,一个自然的候选将是经验分布函数(见维基百科)。对于这种分布,有关于收敛到实际分布的很好的定理(见Dvoretzky-不等式)。
有了这个选择,抽样就特别简单了。如果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)https://stackoverflow.com/questions/40134937
复制相似问题