2017-04-05 3 views
0

大規模なシミュレーションデータセットを持っています。私の主な目的は、実際の実績値を累積分布でシミュレートしたデータと比較することです。データ内に見つかった要素を累積分布にフィッティングするときのエラー

私は一定の値xを持ち、同じ値x

bins = np.linspace(SimData.min(),SimData.max(), 24) 

def CumuProb(SimData, bins, x, realValue): 
    h, bins_ = np.histogram(be, bins=bins) 
    hcum = np.cumsum(h)/float(np.cumsum(h).max()) 

    cbins = np.zeros(len(bins)+1) 
    cbins[1:-1] = bins[1:]-np.diff(bins[:2])[0]/2. 
    cbins[-1] = bins[-1] 

    hcumc = np.linspace(0,1, len(cbins)) 
    hcumc[1:-1] = hcum 

    p = [x, realValue] 

    yi = np.interp(p[1],cbins, hcumc) 
    return [p[1],yi] 
を用いて分析し、「本物」のデータにそれを一致する値を取ることによって、データセットの各ビンを通過する方法を定義することから始めます

このメソッドは、大きな値の場合に有効です。しかし、値< <を1にして> 0にすると、これは悲惨に失敗します。

はたとえば、実行、この方法を使用して私のプロジェクトに与える:彼らは約10ポイントのすべてであるべきときに、一番下に見ることができます

enter image description here

は、2点を自分で青い線(実際のデータ)。

主犯は、このトレースバックから発見された: RuntimeWarning: invalid value encountered in divide hcum = np.cumsum(h)/float(np.cumsum(h).max())

だからこれは私が最も可能性が高い対数x軸の値を通過しているbin=np.linspace(np.log(binding).min(),np.log(binding).max(),24)で定義された私のビンの大きさを、定義していますどのように関係していますビニングのための上記のプロットの中で。

これを修正するにはどうすればよいですか?

+0

チェックアウト[qq-または確率プロット](のhttp:// stackoverflowの、名前が示唆するものを、xを調査するデータポイントのx軸の値がある場合は、補間がでxを取る必要があります。 com/questions/13865596/quantile-quantile-plot-scipyを使用して)。これはあなたが望むものではありませんが、データをディストリビューションと比較したい場合は、おそらくあなたが*すべきことです。 – kazemakase

答えて

関連する問題