编程语言
首页 > 编程语言> > python-使用观察权重绘制密度

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')

输出:
No Weight vs Weighted Densities

注意:您可能无法解决阵列创建方面的时间问题.因为如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