我在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给出的测试点超出此范围。
答案 0 :(得分:1)
ksdensity
使用高斯内核对直方图进行平滑处理。举例来说,检查脉冲响应的输出:
[f,xi] = ksdensity(0);
plot(xi,f)
高斯的宽度为1,这意味着您将在数据的两侧添加大约3(这可以使其看起来好像在严格正的直方图中存在负值)。因此,如果您的数据仅跨越小范围,则需要缩小ksdensity
中的内核宽度。