2014-12-23 233 views

回答

14

sklearn.neighbors.KernelDensitystatsmodels.nonparametric都不支持加權樣本。我修改了scipy.stats.gaussian_kde以允許異構抽樣權重,並認爲結果可能對其他人有用。一個例子如下所示。

example

ipython筆記本可以在這裏找到:http://nbviewer.ipython.org/gist/tillahoffmann/f844bce2ec264c1c8cb5

實現細節

採用加權算術平均是

weighted arithmetic mean

unbiased data covariance matrix然後由給出unbiased covariance matrix

帶寬可以通過scottsilverman規則來選擇,如scipy。但是,用於計算帶寬的樣本數量爲Kish's approximation for the effective sample size

+2

你有沒有考慮要求'scipy' devs將你的代碼整合到'scipy'或'statsmodels'中? – cel

+2

是的,但我還沒有得到實施重採樣和整合。一旦完成,我將發出拉取請求。 –

+0

我一直在研究類似的問題,但使用我自己的框架而不是修改scipy。我沒有想過用Kish的近似。你認爲它是最好的帶寬估算器嗎?它使用相同的有效樣本大小重新調整數據集中的每個點。我想知道可變帶寬是否更有意義。 – Gabriel

0

查看Python的PyQT-Fit和統計軟件包。他們似乎有加權觀測的核密度估計。

+0

請注意,從版本1.3.4開始,PyQT-Fit僅支持1D內核密度估計。 – lapis