def findPercentile(parameter, probability, percentile):
npoints = 10000
interpfunc = interpolate.interp1d(parameter,probability, kind='linear')
parRange = np.linspace(min(parameter),max(parameter),npoints)
interProb = interpfunc(parRange)
cumInteg = np.zeros(npoints-1)
for i in range(1,npoints-1):
cumInteg[i] = cumInteg[i-1] + (0.5*(interProb[i+1] + interProb[i]) * (parRange[i+1] - parRange[i]))
cumInteg = cumInteg / cumInteg[-1]
idx = (np.abs(cumInteg-percentile/100.)).argmin()
return parRange[idx]
评论列表
文章目录