예제 #1
0
def cvar_beta_variable(rv, beta):
    """
    cvar of Beta variable on [0,1]
    """
    qq = rv.ppf(beta)
    scales, shapes = get_distribution_info(rv)[1:]
    qq = (qq - scales["loc"]) / scales["scale"]
    g1, g2 = shapes["a"], shapes["b"]
    cvar01 = ((1 - betainc(1 + g1, g2, qq)) * gamma_fn(1 + g1) * gamma_fn(g2) /
              gamma_fn(1 + g1 + g2)) / (beta_fn(g1, g2) * (1 - beta))
    return cvar01 * scales["scale"] + scales["loc"]
예제 #2
0
def beta_pdf_derivative(alpha_stat, beta_stat, x):
    """
    x in [0,1]
    """
    #beta_const = gamma_fn(alpha_stat+beta_stat)/(
    # gamma_fn(alpha_stat)*gamma_fn(beta_stat))

    beta_const = 1. / beta_fn(alpha_stat, beta_stat)
    deriv = 0
    if alpha_stat > 1:
        deriv += (alpha_stat - 1) * (x**(alpha_stat - 2) *
                                     (1 - x)**(beta_stat - 1))
    if beta_stat > 1:
        deriv -= (beta_stat - 1) * (x**(alpha_stat - 1) *
                                    (1 - x)**(beta_stat - 2))
    deriv *= beta_const
    return deriv
예제 #3
0
def beta_pdf(alpha_stat, beta_stat, x):
    #scipy implementation is slow
    const = 1. / beta_fn(alpha_stat, beta_stat)
    return const * (x**(alpha_stat - 1) * (1 - x)**(beta_stat - 1))