Class GeometricDistribution

    • Field Detail

      • probabilityOfSuccess

        private final double probabilityOfSuccess
        The probability of success.
      • logProbabilityOfSuccess

        private final double logProbabilityOfSuccess
        log(p) where p is the probability of success.
      • log1mProbabilityOfSuccess

        private final double log1mProbabilityOfSuccess
        log(1 - p) where p is the probability of success.
      • sf0

        private final double sf0
        Value of survival probability for x=0. Used in the survival functions. Equal to (1 - probability of success).
      • pmf

        private final java.util.function.IntToDoubleFunction pmf
        Implementation of PMF(x). Assumes that x > 0.
    • Constructor Detail

      • GeometricDistribution

        private GeometricDistribution​(double p)
        Parameters:
        p - Probability of success.
    • Method Detail

      • of

        public static GeometricDistribution of​(double p)
        Creates a geometric distribution.
        Parameters:
        p - Probability of success.
        Returns:
        the geometric distribution
        Throws:
        java.lang.IllegalArgumentException - if p <= 0 or p > 1.
      • getProbabilityOfSuccess

        public double getProbabilityOfSuccess()
        Gets the probability of success parameter of this distribution.
        Returns:
        the probability of success.
      • probability

        public double probability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X = x). In other words, this method represents the probability mass function (PMF) for the distribution.
        Parameters:
        x - Point at which the PMF is evaluated.
        Returns:
        the value of the probability mass function at x.
      • logProbability

        public double logProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns log(P(X = x)), where log is the natural logarithm.
        Parameters:
        x - Point at which the PMF is evaluated.
        Returns:
        the logarithm of the value of the probability mass function at x.
      • cumulativeProbability

        public double cumulativeProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X <= x). In other, words, this method represents the (cumulative) distribution function (CDF) for this distribution.
        Parameters:
        x - Point at which the CDF is evaluated.
        Returns:
        the probability that a random variable with this distribution takes a value less than or equal to x.
      • survivalProbability

        public double survivalProbability​(int x)
        For a random variable X whose values are distributed according to this distribution, this method returns P(X > x). In other words, this method represents the complementary cumulative distribution function.

        By default, this is defined as 1 - cumulativeProbability(x), but the specific implementation may be more accurate.

        Parameters:
        x - Point at which the survival function is evaluated.
        Returns:
        the probability that a random variable with this distribution takes a value greater than x.
      • inverseCumulativeProbability

        public int inverseCumulativeProbability​(double p)
        Computes the quantile function of this distribution. For a random variable X distributed according to this distribution, the returned value is:

        \[ x = \begin{cases} \inf \{ x \in \mathbb Z : P(X \le x) \ge p\} & \text{for } 0 \lt p \le 1 \\ \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \} & \text{for } p = 0 \end{cases} \]

        If the result exceeds the range of the data type int, then Integer.MIN_VALUE or Integer.MAX_VALUE is returned. In this case the result of cumulativeProbability(x) called using the returned p-quantile may not compute the original p.

        The default implementation returns:

        Specified by:
        inverseCumulativeProbability in interface DiscreteDistribution
        Overrides:
        inverseCumulativeProbability in class AbstractDiscreteDistribution
        Parameters:
        p - Cumulative probability.
        Returns:
        the smallest p-quantile of this distribution (largest 0-quantile for p = 0).
      • inverseSurvivalProbability

        public int inverseSurvivalProbability​(double p)
        Computes the inverse survival probability function of this distribution. For a random variable X distributed according to this distribution, the returned value is:

        \[ x = \begin{cases} \inf \{ x \in \mathbb Z : P(X \gt x) \le p\} & \text{for } 0 \le p \lt 1 \\ \inf \{ x \in \mathbb Z : P(X \gt x) \lt 1 \} & \text{for } p = 1 \end{cases} \]

        If the result exceeds the range of the data type int, then Integer.MIN_VALUE or Integer.MAX_VALUE is returned. In this case the result of survivalProbability(x) called using the returned (1-p)-quantile may not compute the original p.

        By default, this is defined as inverseCumulativeProbability(1 - p), but the specific implementation may be more accurate.

        The default implementation returns:

        Specified by:
        inverseSurvivalProbability in interface DiscreteDistribution
        Overrides:
        inverseSurvivalProbability in class AbstractDiscreteDistribution
        Parameters:
        p - Cumulative probability.
        Returns:
        the smallest (1-p)-quantile of this distribution (largest 0-quantile for p = 1).
      • getMean

        public double getMean()
        Gets the mean of this distribution.

        For probability parameter \( p \), the mean is:

        \[ \frac{1 - p}{p} \]

        Returns:
        the mean.
      • getVariance

        public double getVariance()
        Gets the variance of this distribution.

        For probability parameter \( p \), the variance is:

        \[ \frac{1 - p}{p^2} \]

        Returns:
        the variance.
      • getSupportLowerBound

        public int getSupportLowerBound()
        Gets the lower bound of the support. This method must return the same value as inverseCumulativeProbability(0), i.e. \( \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \} \). By convention, Integer.MIN_VALUE should be substituted for negative infinity.

        The lower bound of the support is always 0.

        Returns:
        0.
      • getSupportUpperBound

        public int getSupportUpperBound()
        Gets the upper bound of the support. This method must return the same value as inverseCumulativeProbability(1), i.e. \( \inf \{ x \in \mathbb Z : P(X \le x) = 1 \} \). By convention, Integer.MAX_VALUE should be substituted for positive infinity.

        The upper bound of the support is positive infinity except for the probability parameter p = 1.0.

        Returns:
        Integer.MAX_VALUE or 0.