[英]Weighted Gaussian kernel density estimation in `python`
sklearn.neighbors.KernelDensity
和statsmodels.nonparametric
似乎都不支持加權樣本。 我修改了scipy.stats.gaussian_kde
以允許異構采樣權重,並認為結果可能對其他人有用。 一個例子如下所示。
可以在此處找到ipython
筆記本: http : ipython
加權算術平均值為
無偏數據協方差矩陣由下式給出
可以像scipy
一樣通過scott
或silverman
規則選擇帶寬。 但是,用於計算帶寬的樣本數是Kish 對有效樣本大小的近似值。
對於單變量分布,您可以使用KDEUnivariate
的KDEUnivariate 。 它沒有很好的文檔記錄,但fit
方法接受weights
參數。 那么你不能使用FFT。 下面是一個例子:
import matplotlib.pyplot as plt
from statsmodels.nonparametric.kde import KDEUnivariate
kde1= KDEUnivariate(np.array([10.,10.,10.,5.]))
kde1.fit(bw=0.5)
plt.plot(kde1.support, [kde1.evaluate(xi) for xi in kde1.support],'x-')
kde1= KDEUnivariate(np.array([10.,5.]))
kde1.fit(weights=np.array([3.,1.]),
bw=0.5,
fft=False)
plt.plot(kde1.support, [kde1.evaluate(xi) for xi in kde1.support], 'o-')
查看 Python 的 PyQT-Fit 和統計數據包。 他們似乎有加權觀察的核密度估計。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.