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"]
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
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))