2

statsmodels.distributionsのECDF(経験累積分布関数)を使用して、いくつかのデータのCDFをプロットしています。ただし、ECDFは階段関数を使用しているため、ギザギザに見えるプロットが得られます。

ここに画像の説明を入力してください

だから私の質問は:scipyまたはstatsmodelsにはステップ関数なしでECDFが組み込まれていますか?

ちなみに、私はこれができることを知っています:

hist, bin_edges = histogram(b_oz, normed=True)
plot(np.cumsum(hist))

しかし、私は正しいスケールを取得していません。

ありがとう!

4

1 に答える 1

10

プロットを変更したいだけの場合は、matplotlibに観測値間を補間させることができます。

>>> xx = np.random.randn(nobs)
>>> ecdf = sm.distributions.ECDF(xx)
>>> plt.plot(ecdf.x, ecdf.y)
[<matplotlib.lines.Line2D object at 0x07A872D0>]
>>> plt.show()

または元のデータを並べ替えてプロット

>>> xx.sort()
>>> plt.plot(xx, ecdf(xx))
[<matplotlib.lines.Line2D object at 0x07A87090>]
>>> plt.show()

これは直接プロットするのと同じです

>>> a=0; plt.plot(xx, np.arange(1.,nobs+1)/(nobs+a))
[<matplotlib.lines.Line2D object at 0x07A87D30>]
>>> plt.show()

注:ecdfを境界でどのように動作させ、中央に配置するかによって、a例として追加したパラメーターa = 1が一般的であるなど、一般的に使用される「プロット位置」の正規化が異なります。選択。

経験累積分布関数を使用する代わりに、補間または平滑化されたecdfまたはヒストグラム、あるいはカーネル密度推定を使用することもできます。

于 2012-12-23T01:00:57.783 に答える