# Class PoissonDistribution

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

public class PoissonDistribution extends DiscreteDistribution implements DiscreteExponentialFamily
Poisson distribution expresses the probability of a number of events occurring in a fixed period of time if these events occur with a known average rate and independently of the time since the last event. The Poisson distribution can also be used for the number of events in other specified intervals such as distance, area or volume. If the expected number of occurrences in this interval is λ, then the probability that there are exactly n occurrences (n = 0, 1, 2, ...) is equal to f(n; λ) = λn e / n!. For sufficiently large values of λ, (say λ `> 1000`), the normal distribution with mean λ and variance λ, is an excellent approximation to the Poisson distribution. If λ is greater than about 10, then the normal distribution is a good approximation if an appropriate continuity correction is performed, i.e., `P(X <= x)`, where (lower-case) x is a non-negative integer, is replaced by `P(X <= x + 0.5)`.

When a variable is Poisson distributed, its square root is approximately normally distributed with expected value of about λ1/2 and variance of about 1/4.

• ## Field Summary

Fields
Modifier and Type
Field
Description
`final double`
`lambda`
The average number of events per interval.
• ## Constructor Summary

Constructors
Constructor
Description
`PoissonDistribution(double lambda)`
Constructor.
• ## Method Summary

Modifier and Type
Method
Description
`double`
`cdf(double k)`
Cumulative distribution function.
`double`
`entropy()`
Returns Shannon entropy of the distribution.
`static PoissonDistribution`
`fit(int[] data)`
Estimates the distribution parameters by MLE.
`int`
`length()`
Returns the number of parameters of the distribution.
`double`
`logp(int k)`
The probability mass function in log scale.
`DiscreteMixture.Component`
```M(int[] x, double[] posteriori)```
The M step in the EM algorithm, which depends on the specific distribution.
`double`
`mean()`
Returns the mean of distribution.
`double`
`p(int k)`
The probability mass function.
`double`
`quantile(double p)`
The quantile, the probability to the left of quantile is p.
`double`
`rand()`
This function generates a random variate with the poisson distribution.
`double`
`sd()`
Returns the standard deviation of distribution.
`String`
`toString()`

`double`
`variance()`
Returns the variance of distribution.

### Methods inherited from class smile.stat.distribution.DiscreteDistribution

`likelihood, logLikelihood, logp, p, quantile, randi, randi`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface smile.stat.distribution.Distribution

`inverseTransformSampling, likelihood, logLikelihood, quantile, quantile, rand, rejectionSampling`
• ## Field Details

• ### lambda

public final double lambda
The average number of events per interval.
• ## Constructor Details

• ### PoissonDistribution

public PoissonDistribution(double lambda)
Constructor.
Parameters:
`lambda` - the average number of events per interval.
• ## Method Details

• ### fit

public static PoissonDistribution 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()
Description copied from interface: `Distribution`
Returns Shannon entropy of the distribution.
Specified by:
`entropy` in interface `Distribution`
Returns:
Shannon entropy.
• ### toString

public String toString()
Overrides:
`toString` in class `Object`
• ### 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.
• ### rand

public double rand()
This function generates a random variate with the poisson distribution.

Uses down/up search from the mode by chop-down technique for λ `< 20`, and patchwork rejection method for λ `>= 20`.

For λ `< 1E-6` numerical inaccuracy is avoided by direct calculation.

Specified by:
`rand` in interface `Distribution`
Returns:
a random number.