2017-04-05 87 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,這很糟糕的失敗。

例如,在執行上使用這種方法我的項目爲:

enter image description here

在那裏你可以在最底層看到,他們是2分,當他們應該是10分左右全部上藍線(實際數據)。

主要的罪魁禍首是從這個追蹤發現: RuntimeWarning: invalid value encountered in divide hcum = np.cumsum(h)/float(np.cumsum(h).max())

所以這個必須做我如何最有可能定義我的倉大小,這是在bin=np.linspace(np.log(binding).min(),np.log(binding).max(),24)定義,它是通過對數x軸的數值會在上面的分區圖中。

我該如何解決這個問題?

+0

退房[QQ-或概率圖](HTTP://計算器。 COM /問題/ 13865596 /位數 - 分位數,情節使用-SciPy的)。雖然這不是你想要的*,但如果你想將數據與發行版進行比較,那麼這可能是你應該做的。 – kazemakase

回答

0

我不能100%確定,因爲問題缺乏大量相關信息,但從I intended to use this function的判斷來看,將realValue置入插值看起來很奇怪。如果,什麼顧名思義,x是數據點的x軸的值進行調查,插值應在x

yi = np.interp(x,cbins, hcumc) 
return [x,yi]