Matlab ksdensity点范围

时间:2012-05-01 05:11:39

标签: matlab range histogram kernel-density

我在MATLAB中使用这种形式的ksdensity函数。

[f,xi] = ksdensity(x)

文件说“f是在xi点评估的密度值矢量......密度是在100个等间距点上进行评估,这些点覆盖x中数据的范围。”

现在,我的xi值覆盖的范围比x中的数据大得多。这是为什么?

对于我的数据,

>> min(x)

ans =

   -2.2588

>> min(xi)

ans =

   -6.8010
>> max(x)

ans =

    6.5326

>> max(xi)

ans =

   11.0748

我知道我可以自己指定一个xi范围,但为什么默认情况下它的最小值和最大值之间没有等间距?

当直方图中的区间仅覆盖x的范围时,很难比较直方图估计量和核估计量,而ksdensity给出的测试点超出此范围。

1 个答案:

答案 0 :(得分:1)

ksdensity使用高斯内核对直方图进行平滑处理。举例来说,检查脉冲响应的输出:

[f,xi] = ksdensity(0);
plot(xi,f)

enter image description here

高斯的宽度为1,这意味着您将在数据的两侧添加大约3(这可以使其看起来好像在严格正的直方图中存在负值)。因此,如果您的数据仅跨越小范围,则需要缩小ksdensity中的内核宽度。