0

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

为什么ksdensity要这样做?我觉得它在假设连续可微性的情况下完成了曲线。这是一个正确的假设吗?

有没有什么选项可以让 Matlab 不猜测而只给出经验累积函数的“导数”?

4

1 回答 1

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)
于 2013-07-01T17:43:47.857 回答