2012-05-01 248 views
1

我在MATLAB中使用这种形式的ksdensity函数。Matlab ksdensity点范围

[f,xi] = ksdensity(x)

文档说“f是在XI点评估密度值的向量...的密度在覆盖在x中的数据的范围100个相等间隔的点进行评价。”

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

对于我的数据,

>> min(x) 

ans = 

    -2.2588 

>> min(xi) 

ans = 

    -6.8010 
>> max(x) 

ans = 

    6.5326 

>> max(xi) 

ans = 

    11.0748 

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

当直方图中的分箱仅覆盖x的范围时,它很难比较直方图估计器和内核估计器,而由ksdensity给出的测试点超过此范围。

回答

1

ksdensity用高斯内核执行平滑直方图。作为说明,检查脉冲响应的输出:

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

enter image description here

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