【问题标题】:Matlab ksdensity not working properlyMatlab ksdensity 无法正常工作
【发布时间】:2013-07-01 17:22:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

    (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)
    

    【讨论】:

    • 谢谢。但是然后.. 是否有任何 matlab 函数可以“派生”出经验 CDF?我真的不喜欢直方图
    • 如果我是你,我会研究如何插入卡方或伽马分布。我不确定如何传递两个参数。也许打开 ksdensity 文件,看看它是如何使用正态分布的,然后对其进行调整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 2013-04-20
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    相关资源
    最近更新 更多