擅长:python、mysql、java
<p>鉴于样本量较小,我将使用<a href="https://openturns.org" rel="nofollow noreferrer">OpenTURNS</a>的<code>KernelSmoothing</code>类。默认情况下,它提供Scott的多维规则。如果需要,我们可以使用Sheapler和Jones的直接插件算法,它在许多情况下提供了良好的带宽,即使分布是多模式的</p>
<p>以下脚本使用默认带宽</p>
<pre><code>x = [
-0.04124324405924407,
0,
0.005249724476788287,
0.03599351958245578,
-0.00252785423151014,
0.01007584102031178,
-0.002510349639322063,
-0.01264302961474806,
-0.01797169063489579,
]
import openturns as ot
sample = ot.Sample(x, 1)
factory = ot.KernelSmoothing()
distribution = factory.build(sample)
</code></pre>
<p>就这样</p>
<p>如果要使用更智能的带宽选择,我们可以使用<code>computePluginBandwidth</code>方法,该方法基于Sheapler和Jones的直接“求解方程”规则。在下面的脚本中,我在评估带宽后绘制了分布图</p>
<pre><code>bandwidth = factory.computePluginBandwidth(sample)
distribution = factory.build(sample, bandwidth)
distribution.drawPDF()
</code></pre>
<p>带宽评估为0.00941247。PDF格式如下</p>
<p><a href="https://i.stack.imgur.com/2ifjz.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2ifjz.png" alt="PDF estimated from KernelSmoothing"/></a></p>