2012-05-01 176 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中縮小內核寬度。