smile.stat.distribution

## Class PoissonDistribution

• All Implemented Interfaces:
java.io.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

```             λn e-λ
f(n; λ) = ---------
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.

Serialized Form
• ### Field Summary

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

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

All Methods
Modifier and Type Method and Description
`double` `cdf(double k)`
Cumulative distribution function.
`double` `entropy()`
Shannon entropy of the distribution.
`static PoissonDistribution` `fit(int[] data)`
Estimates the distribution parameters by MLE.
`int` `length()`
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 the specific distribution.
`double` `mean()`
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()`
The standard deviation of distribution.
`java.lang.String` `toString()`
`double` `variance()`
The variance of distribution.
• ### Methods inherited from class smile.stat.distribution.DiscreteDistribution

`likelihood, logLikelihood, logp, p, quantile, randi, randi`
• ### Methods inherited from class smile.stat.distribution.AbstractDistribution

`inverseTransformSampling, quantile, quantile, rejection`
• ### 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

`likelihood, logLikelihood, rand`
• ### Field Detail

• #### lambda

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

• #### PoissonDistribution

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

• #### fit

`public static PoissonDistribution fit(int[] data)`
Estimates the distribution parameters by MLE.
• #### length

`public int length()`
Description copied from interface: `Distribution`
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`
• #### mean

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

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

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

`public double entropy()`
Description copied from interface: `Distribution`
Shannon entropy of the distribution.
Specified by:
`entropy` in interface `Distribution`
• #### toString

`public java.lang.String toString()`
Overrides:
`toString` in class `java.lang.Object`
• #### p

`public double p(int k)`
Description copied from class: `DiscreteDistribution`
The probability mass function.
Specified by:
`p` in class `DiscreteDistribution`
• #### logp

`public double logp(int k)`
Description copied from class: `DiscreteDistribution`
The probability mass function in log scale.
Specified by:
`logp` in class `DiscreteDistribution`
• #### 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`
• #### 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`
• #### M

```public DiscreteMixture.Component M(int[] x,
double[] posteriori)```
Description copied from interface: `DiscreteExponentialFamily`
The M step in the EM algorithm, which depends 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 λ < 1.E-6 numerical inaccuracy is avoided by direct calculation.

Specified by:
`rand` in interface `Distribution`