我正在使用严格正面的观察向量(它们是距离度量)
我使用ksdensity
与此向量来感受密度函数,并且令人惊讶地它包含负值。意味着存在观察所有负值区间的正概率
这是不正确的,因为我知道我的观察都是积极的。
为什么ksdensity
这样做?假设连续可微分,我感觉它完成了曲线。这是正确的假设吗?
Matlab没有猜测任何选项,只是给出了经验累积函数的“衍生物”吗?
答案 0 :(得分:6)
ksdensity
返回的概率密度估计是基于正常内核函数的假设。如果您的数据的值接近于零,那么当各个内核相加时,您自然会得到一些重叠:
直方图不会出现此问题,因为它只显示实际存在的值。要修复错误,您可以指定不同的分布(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)