簡體   English   中英

如何找到與 Python 中的兩個分位數匹配的 beta 密度的形狀參數?

[英]How to find the shape parameters of a beta density that matches two quantiles in Python?

在 R 中有beta.select() function,它找到與分布的兩個分位數的知識相匹配的 beta 密度的形狀參數

這是文檔中的一個示例:

quantile1=list(p=.5,x=0.25)
quantile2=list(p=.9,x=0.45)
beta.select(quantile1,quantile2)

但是,要在 Python 中做同樣的事情,我在 scipy 的beta 文檔中沒有找到任何類似的方法。

  • 是否有任何替代 scipy 庫來執行此任務?
  • 在 Python 中使用list()生成 R 的分位數是多少? 我知道如何用np.quantile()計算給定數組的分位數,但它期望一個數組作為輸入,而不是概率(例如p=.5 )。

SciPy 中沒有等效的 function。 這是基於scipy.special.betaincscipy.optimize.fsolve的實現:

from scipy.special import betainc
from scipy.optimize import fsolve


def _beta_select_equation(params, p1, x1, p2, x2):
    return betainc(*params, [x1, x2]) - [p1, p2]


def beta_select(p1, x1, p2, x2):
    params, info, status, mesg = fsolve(_beta_select_equation, [1, 1],
                                        args=(p1, x1, p2, x2), xtol=1e-12,
                                        full_output=True)
    if status != 1:
        raise RuntimeError(f'fsolve failed: {mesg}')
    return params

例如,

In [21]: beta_select(p1=0.5, x1=0.25, p2=0.9, x2=0.45)
Out[21]: array([2.66897386, 7.36479059])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM