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 Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecdf(double k) Cumulative distribution function.doubleentropy()Shannon's entropy.static GeometricDistributionfit(int[] data) Estimates the distribution parameters by MLE.intlength()Returns the number of parameters of the distribution.doublelogp(int k) The probability mass function in log scale.M(int[] x, double[] posteriori) The M step in the EM algorithm, which depends on the specific distribution.doublemean()Returns the mean of distribution.doublep(int k) The probability mass function.doublequantile(double p) The quantile, the probability to the left of quantile is p.doublerand()Generates a random number following this distribution.doublesd()Returns the standard deviation of distribution.toString()doublevariance()Returns the variance of distribution.Methods inherited from class DiscreteDistribution
likelihood, logLikelihood, logp, p, quantile, randi, randiMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface Distribution
inverseTransformSampling, likelihood, logLikelihood, quantile, quantile, rand, rejectionSampling
-
Field Details
-
p
public final double pProbability of success on each trial.
-
-
Constructor Details
-
GeometricDistribution
public GeometricDistribution(double p) Constructor.- Parameters:
p- the probability of success.
-
-
Method Details
-
fit
Estimates the distribution parameters by MLE.- Parameters:
data- the training data.- Returns:
- the distribution.
-
length
public int length()Description copied from interface:DistributionReturns the number of parameters of the distribution. The "length" is in the sense of the minimum description length principle.- Specified by:
lengthin interfaceDistribution- Returns:
- The number of parameters.
-
mean
public double mean()Description copied from interface:DistributionReturns the mean of distribution.- Specified by:
meanin interfaceDistribution- Returns:
- The mean.
-
variance
public double variance()Description copied from interface:DistributionReturns the variance of distribution.- Specified by:
variancein interfaceDistribution- Returns:
- The variance.
-
sd
public double sd()Description copied from interface:DistributionReturns the standard deviation of distribution.- Specified by:
sdin interfaceDistribution- Returns:
- The standard deviation.
-
entropy
public double entropy()Shannon's entropy. Not supported.- Specified by:
entropyin interfaceDistribution- Returns:
- Shannon entropy.
-
toString
-
rand
public double rand()Description copied from interface:DistributionGenerates a random number following this distribution.- Specified by:
randin interfaceDistribution- Returns:
- a random number.
-
p
public double p(int k) Description copied from class:DiscreteDistributionThe probability mass function.- Specified by:
pin classDiscreteDistribution- Parameters:
k- a real value.- Returns:
- the probability.
-
logp
public double logp(int k) Description copied from class:DiscreteDistributionThe probability mass function in log scale.- Specified by:
logpin classDiscreteDistribution- Parameters:
k- a real value.- Returns:
- the log probability.
-
cdf
public double cdf(double k) Description copied from interface:DistributionCumulative distribution function. That is the probability to the left of x.- Specified by:
cdfin interfaceDistribution- Parameters:
k- a real number.- Returns:
- the probability.
-
quantile
public double quantile(double p) Description copied from interface:DistributionThe quantile, the probability to the left of quantile is p. It is actually the inverse of cdf.- Specified by:
quantilein interfaceDistribution- Parameters:
p- the probability.- Returns:
- the quantile.
-
M
Description copied from interface:DiscreteExponentialFamilyThe M step in the EM algorithm, which depends on the specific distribution.- Specified by:
Min interfaceDiscreteExponentialFamily- Parameters:
x- the input data for estimationposteriori- the posteriori probability.- Returns:
- the (unnormalized) weight of this distribution in the mixture.
-