4

観測の重みを持つデータを使用して密度をプロットする方法はありますか?

観測のベクトルと、観測の数を示すx整数の重みのベクトルがあります。つまり密度はyy1x1

   x    y 
   1    2
   2    2
   2    3 

1, 1, 2, 2, 2, 2 ,2(2x1, 5x2)の密度に等しい 。私が理解している限り matplotlib.pyplot.hist(weights=y)、ヒストグラムをプロットするときに観測の重みを考慮してください。密度の計算とプロットに相当するものはありますか?

パッケージでこれを実行できるようにしたい理由は、データが非常に大きく、より効率的な代替手段を探しているからです。

あるいは、他のパッケージも受け入れます。

4

1 に答える 1

4

Statsmodels の kde 単変量は、フィット関数で重みを受け取ります。次のコードの出力を参照してください。

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

出力: 無重量 vs 加重密度

注: アレイの作成に関する時間の問題は、おそらくこれでは解決されません。ソースコードに記載されているように:

FFT が False の場合、'number_of_obs' x 'gridsize' 中間配列が作成されます。

于 2015-11-08T01:04:19.543 に答える