public class PascalDistribution extends AbstractIntegerDistribution
Implementation of the Pascal distribution. The Pascal distribution is a special case of the Negative Binomial distribution where the number of successes parameter is an integer.
There are various ways to express the probability mass and distribution functions for the Pascal distribution. The
present implementation represents the distribution of the number of failures before r
successes occur. This
is the convention adopted in e.g. MathWorld, but not in Wikipedia.
For a random variable X
whose values are distributed according to this distribution, the probability mass
function is given by
P(X = k) = C(k + r - 1, r - 1) * p^r * (1 - p)^k,
where r
is the number of successes, p
is the probability of success, and X
is the total
number of failures. C(n, k)
is the binomial coefficient (n
choose k
). The mean and variance
of X
are
E(X) = (1 - p) * r / p, var(X) = (1 - p) * r / p^2.
Finally, the cumulative distribution function is given by
P(X <= k) = I(p, r, k + 1)
, where I is the regularized incomplete Beta function.
random
Constructor and Description |
---|
PascalDistribution(int r,
double p)
Create a Pascal distribution with the given number of successes and
probability of success.
|
PascalDistribution(RandomGenerator rng,
int r,
double p)
Create a Pascal distribution with the given number of successes and
probability of success.
|
Modifier and Type | Method and Description |
---|---|
double |
cumulativeProbability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X <= x) . |
int |
getNumberOfSuccesses()
Access the number of successes for this distribution.
|
double |
getNumericalMean()
Use this method to get the numerical value of the mean of this
distribution.
|
double |
getNumericalVariance()
Use this method to get the numerical value of the variance of this
distribution.
|
double |
getProbabilityOfSuccess()
Access the probability of success for this distribution.
|
int |
getSupportLowerBound()
Access the lower bound of the support.
|
int |
getSupportUpperBound()
Access the upper bound of the support.
|
boolean |
isSupportConnected()
Use this method to get information about whether the support is
connected, i.e.
|
double |
probability(int x)
For a random variable
X whose values are distributed according
to this distribution, this method returns P(X = x) . |
cumulativeProbability, inverseCumulativeProbability, reseedRandomGenerator, sample, sample, solveInverseCumulativeProbability
public PascalDistribution(int r, double p)
r
- Number of successes.p
- Probability of success.NotStrictlyPositiveException
- if the number of successes is not positiveOutOfRangeException
- if the probability of success is not in the
range [0, 1]
.public PascalDistribution(RandomGenerator rng, int r, double p)
rng
- Random number generator.r
- Number of successes.p
- Probability of success.NotStrictlyPositiveException
- if the number of successes is not positiveOutOfRangeException
- if the probability of success is not in the
range [0, 1]
.public int getNumberOfSuccesses()
public double getProbabilityOfSuccess()
public double probability(int x)
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.x
- the point at which the PMF is evaluatedx
public double cumulativeProbability(int x)
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.x
- the point at which the CDF is evaluatedx
public double getNumericalMean()
r
and probability of success p
,
the mean is r * (1 - p) / p
.Double.NaN
if it is not definedpublic double getNumericalVariance()
r
and probability of success p
,
the variance is r * (1 - p) / p^2
.Double.POSITIVE_INFINITY
or Double.NaN
if it is not defined)public int getSupportLowerBound()
inverseCumulativeProbability(0)
. In other words, this
method must return
inf {x in Z | P(X <= x) > 0}
.
public int getSupportUpperBound()
inverseCumulativeProbability(1)
. In other words, this
method must return
inf {x in R | P(X <= x) = 1}
.
Integer.MAX_VALUE
.Integer.MAX_VALUE
for positive infinity)public boolean isSupportConnected()
true
Copyright © 2023 CNES. All rights reserved.