Matlab ksdensity无法正常工作

时间:2013-07-01 17:22:26

标签: matlab

我正在使用严格正面的观察向量(它们是距离度量) 我使用ksdensity与此向量来感受密度函数,并且令人惊讶地它包含负值。意味着存在观察所有负值区间的正概率 这是不正确的,因为我知道我的观察都是积极的。

为什么ksdensity这样做?假设连续可微分,我感觉它完成了曲线。这是正确的假设吗?

Matlab没有猜测任何选项,只是给出了经验累积函数的“衍生物”吗?

1 个答案:

答案 0 :(得分:6)

ksdensity返回的概率密度估计是基于正常内核函数的假设。如果您的数据的值接近于零,那么当各个内核相加时,您自然会得到一些重叠:

enter image description here

Image Source

直方图不会出现此问题,因为它只显示实际存在的值。要修复错误,您可以指定不同的分布(Mathworks称为“内核平滑器”),甚至可以添加自定义分布。例如:

[f,xi] = ksdensity(x,pts,'kernel','epanechnikov')

用epanechnikov替换正态分布。

修改

...并且证明您应该首先阅读文档,我刚刚发现您可以将内核密度估算限制为正值:

x = gamrnd(5,7,1000,1);
[f,xi] = ksdensity(x,'support','positive');
figure
plot(xi,f,'linewidth',2)