我正在使用严格正面的观察向量(它们是距离测量).
我使用ksdensity这个向量来获得密度函数的感觉,并且令人惊讶地它包含负值.意味着存在观察所有负值区间的正概率.
这是不正确的,因为我知道我的观察都是积极的.
为什么ksdensity这样做?假设连续可微分,我感觉它完成了曲线.这是正确的假设吗?
是否有任何选项,Matlab不会猜测,只是给出经验累积函数的"衍生物"?
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)
Run Code Online (Sandbox Code Playgroud)