Class GeometricDistribution

java.lang.Object
smile.stat.distribution.DiscreteDistribution
smile.stat.distribution.GeometricDistribution
All Implemented Interfaces:
Serializable, DiscreteExponentialFamily, Distribution

public class GeometricDistribution extends DiscreteDistribution implements DiscreteExponentialFamily
The geometric distribution is a discrete probability distribution of the number X of Bernoulli trials needed to get one success, supported on the set {1, 2, 3, …}. Sometimes, people define that the probability distribution of the number Y = X - 1 of failures before the first success, supported on the set {0, 1, 2, 3, …}. To reduce the confusion, we denote the latter as shifted geometric distribution. If the probability of success on each trial is p, then the probability that the k-th trial (out of k trials) is the first success is Pr(X = k) = (1 - p)k-1 p.

Like its continuous analogue (the exponential distribution), the geometric distribution is memoryless. That means that if you intend to repeat an experiment until the first success, then, given that the first success has not yet occurred, the conditional probability distribution of the number of additional trials does not depend on how many failures have been observed. The geometric distribution is in fact the only memoryless discrete distribution.

Among all discrete probability distributions supported on {1, 2, 3, …} with given expected value μ, the geometric distribution X with parameter p = 1/μ is the one with the largest entropy.

See Also:
  • Field Details

    • p

      public final double p
      Probability of success on each trial.
  • Constructor Details

    • GeometricDistribution

      public GeometricDistribution(double p)
      Constructor.
      Parameters:
      p - the probability of success.
  • Method Details

    • fit

      public static GeometricDistribution fit(int[] data)
      Estimates the distribution parameters by MLE.
      Parameters:
      data - the training data.
      Returns:
      the distribution.
    • length

      public int length()
      Description copied from interface: Distribution
      Returns the number of parameters of the distribution. The "length" is in the sense of the minimum description length principle.
      Specified by:
      length in interface Distribution
      Returns:
      The number of parameters.
    • mean

      public double mean()
      Description copied from interface: Distribution
      Returns the mean of distribution.
      Specified by:
      mean in interface Distribution
      Returns:
      The mean.
    • variance

      public double variance()
      Description copied from interface: Distribution
      Returns the variance of distribution.
      Specified by:
      variance in interface Distribution
      Returns:
      The variance.
    • sd

      public double sd()
      Description copied from interface: Distribution
      Returns the standard deviation of distribution.
      Specified by:
      sd in interface Distribution
      Returns:
      The standard deviation.
    • entropy

      public double entropy()
      Shannon's entropy. Not supported.
      Specified by:
      entropy in interface Distribution
      Returns:
      Shannon entropy.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • rand

      public double rand()
      Description copied from interface: Distribution
      Generates a random number following this distribution.
      Specified by:
      rand in interface Distribution
      Returns:
      a random number.
    • p

      public double p(int k)
      Description copied from class: DiscreteDistribution
      The probability mass function.
      Specified by:
      p in class DiscreteDistribution
      Parameters:
      k - a real value.
      Returns:
      the probability.
    • logp

      public double logp(int k)
      Description copied from class: DiscreteDistribution
      The probability mass function in log scale.
      Specified by:
      logp in class DiscreteDistribution
      Parameters:
      k - a real value.
      Returns:
      the log probability.
    • cdf

      public double cdf(double k)
      Description copied from interface: Distribution
      Cumulative distribution function. That is the probability to the left of x.
      Specified by:
      cdf in interface Distribution
      Parameters:
      k - a real number.
      Returns:
      the probability.
    • quantile

      public double quantile(double p)
      Description copied from interface: Distribution
      The quantile, the probability to the left of quantile is p. It is actually the inverse of cdf.
      Specified by:
      quantile in interface Distribution
      Parameters:
      p - the probability.
      Returns:
      the quantile.
    • M

      public DiscreteMixture.Component M(int[] x, double[] posteriori)
      Description copied from interface: DiscreteExponentialFamily
      The M step in the EM algorithm, which depends on the specific distribution.
      Specified by:
      M in interface DiscreteExponentialFamily
      Parameters:
      x - the input data for estimation
      posteriori - the posteriori probability.
      Returns:
      the (unnormalized) weight of this distribution in the mixture.