Matlab ksdensity无法正常工作

Man*_*uel 0 matlab

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

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

是否有任何选项,Matlab不会猜测,只是给出经验累积函数的"衍生物"?

Dor*_*oom 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)
Run Code Online (Sandbox Code Playgroud)