我正在使用一个严格的正观测向量(它们是一个距离度量)。
我将ksdensity与这个向量一起使用,以获得密度函数的感觉,令人惊讶的是,它包含负值。这意味着观察到所有负值区间的概率都是正的。
这是不正确的,因为我知道我的观察都是积极的。
为什么ksdensity要这么做?我有一种感觉,它完成了假设连续可微的曲线。这是一个正确的假设吗?
有没有什么办法可以让Matlab不去猜测,只给出经验累积函数的“导数”?
发布于 2013-07-02 01:43:48
ksdensity返回的概率密度估计基于正态核函数的假设。如果你的数据的值接近于零,那么当各个内核相加时,你自然会得到一些重叠到负值:

(Image Source)
直方图不会有这个问题,因为它只显示实际存在的值。为了纠正这个错误,你可以指定一个不同的发行版( Mathworks称之为“内核平滑器”),甚至可以添加一个自定义的发行版。例如:
[f,xi] = ksdensity(x,pts,'kernel','epanechnikov')
将正态分布替换为epanechnikov。
编辑:
...and证明你应该首先阅读文档,我刚刚发现你可以将你的内核密度估计限制为正值:
x = gamrnd(5,7,1000,1);
[f,xi] = ksdensity(x,'support','positive');
figure
plot(xi,f,'linewidth',2)https://stackoverflow.com/questions/17410155
复制相似问题