def chi_high(x, df): """Returns right-hand tail of chi-square distribution (x to infinity). df, the degrees of freedom, ranges from 1 to infinity (assume integers). Typically, df is (r-1)*(c-1) for a r by c table. Result ranges from 0 to 1. See Cephes docs for details. """ x = fix_rounding_error(x) if x < 0: raise ValueError("chi_high: x must be >= 0 (got %s)." % x) if df < 1: raise ValueError("chi_high: df must be >= 1 (got %s)." % df) return igamc(df / 2, x / 2)
def bdtrc(k, n, p): """Complement of binomial distribution, k+1 through n. Uses formula bdtrc(k, n, p) = betai(k+1, n-k, p) See Cephes docs for details. """ p = fix_rounding_error(p) if (p < 0) or (p > 1): raise ValueError("Binomial p must be between 0 and 1.") if (k < 0) or (n < k): raise ValueError("Binomial k must be between 0 and n.") if k == n: return 0 dn = n - k if k == 0: if p < .01: dk = -expm1(dn * log1p(-p)) else: dk = 1 - pow(1.0 - p, dn) else: dk = k + 1 dk = betai(dk, dn, p) return dk