class MoreMath::TDistribution
This class is used to compute the T-Distribution.
def initialize(df)
def initialize(df) @df = df end
def inverse_probability(p)
Returns the inverse cumulative probability (t-value) of the TDistribution
def inverse_probability(p) case when p <= 0 -1 / 0.0 when p >= 1 1 / 0.0 else begin bisect = NewtonBisection.new { |x| probability(x) - p } range = bisect.bracket(-10..10) bisect.solve(range, 1_000_000) rescue 0 / 0.0 end end end
def probability(x)
Returns the cumulative probability (p-value) of the TDistribution for the
def probability(x) if x == 0 0.5 else t = beta_regularized(@df / (@df + x ** 2.0), 0.5 * @df, 0.5) if x < 0.0 0.5 * t else 1 - 0.5 * t end end end