python-使用观察权重绘制密度
作者:互联网
有没有一种方法可以使用具有观测权重的数据来绘制密度?
我有一个观测值x的向量和一个整数权重y的向量,这样y1表示我们对x1有多少个观测值.也就是说,密度
x y
1 2
2 2
2 3
等于1、1、2、2、2、2、2(2×1、5×2)的密度.据我了解,
matplotlib.pyplot.hist(weights = y)在绘制直方图时允许观察权重.有计算和绘制密度的等效项吗?
我希望程序包能够执行此操作的原因是我的数据非常大,因此我正在寻找更有效的替代方法.
另外,我也开放其他软件包.
解决方法:
Statsmodels的kde单变量在其fit function中接收权重.请参见以下代码的输出.
import matplotlib.pyplot as plt
import statsmodels.api as sm
import pandas as pd
df = pd.DataFrame({'x':[1.,2.],'weight':[2,4]})
weighted = sm.nonparametric.KDEUnivariate(df.x)
noweight = sm.nonparametric.KDEUnivariate(df.x)
weighted.fit(fft=False, weights=df.weight)
noweight.fit()
f, (ax1, ax2) = plt.subplots(1, 2, sharey=True)
ax1.plot(noweight.support, noweight.density)
ax2.plot(weighted.support, weighted.density)
ax1.set_title('No Weight')
ax2.set_title('Weighted')
注意:您可能无法解决阵列创建方面的时间问题.因为如source code中所述:
If FFT is False, then a ‘number_of_obs’ x ‘gridsize’ intermediate
array is created
标签:matplotlib,scikits,python 来源: https://codeday.me/bug/20191121/2048856.html