我有一个代表概率密度函数的KDE(PDF)。
现在,我想获得满足的变量lower
的值:
kde.integrate_box_1d(lower, 2.0) == 0.05
其中0.05
是"临界值"。 2.0
是上限。
到目前为止,我使用以下代码解决了这个问题:
def finder(KDE, critical, lower, upper):
stop = True
search = lower
while stop:
if KDE.integrate_box_1d(search+0.00001,upper) > critical:
search += 0.0001
else: stop = False
return search, KDE.integrate_box_1d(search,upper)
但是,此代码效率低且不准确。我想知道你是否知道更好的方法来找到lower
答案 0 :(得分:1)
这对我来说就像是一根根发现。看看
更具体地说,你可以尝试像
这样的东西solver = scipy.optimize.brentq # or brenth or ridder or bisect
def finder(KDE, critical, lower, upper):
def f(search):
return KDE.integrate_box_1d(search, upper) - critical
x, r = solver(f, lower, upper, full_output=True)
assert r.converged
return x
HTH,保罗