[英]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.