gleam_stats/distributions/negbinomial
Functions related to discrete negative binomial random variables.
- Available Functions
Functions
pub fn negbinomial_cdf(x: Int, r: Int, p: Float) -> Result(
Float,
String,
)
Evaluate, at a certain point, the cumulative distribution function (cdf) of a discrete negative binomial distribution with parameters ‘r’ > 0 (number of failures until the experiment is stopped) and ‘p’ in the interval [0, 1] (the success probability in each experiment).
Example:
import gleam_stats/distributions/negbinomial
import gleeunit/should
pub fn example() {
let r: Float = 40.
let p: Float = 0.5
// For illustrational purposes, evaluate the cdf at the
// point -100.0
negbinomial.negbinomial_cdf(-100.0, r, p) |> should.equal(Ok(0.0))
}
pub fn negbinomial_mean(r: Int, p: Float) -> Result(Float, String)
Analytically compute the mean of a discrete negative binomial distribution with parameters ‘r’ > 0 (number of failures until the experiment is stopped) and ‘p’ in the interval [0, 1] (the success probability in each experiment).
pub fn negbinomial_pmf(x: Int, r: Int, p: Float) -> Result(
Float,
String,
)
Evaluate the probability mass function (pmf) of a discrete negative binomial distribution with parameters ‘r’ > 0 (number of failures until the experiment is stopped) and ‘p’ in the interval [0, 1] (the success probability in each experiment).
Example:
import gleam_stats/distributions/negbinomial
import gleeunit/should
pub fn example() {
let r: Float = 40.
let p: Float = 0.5
// For illustrational purposes, evaluate the pmf at the
// point -100.0
negbinomial.negbinomial_pmf(-100.0, r, p) |> should.equal(Ok(0.0))
}
pub fn negbinomial_random(stream: Iterator(Int), r: Int, p: Float, m: Int) -> Result(
#(List(Int), Iterator(Int)),
String,
)
Generate ‘m’ random numbers from a discrete negative binomial distribution with parameters ‘r’ > 0 (number of failures until the experiment is stopped) and ‘p’ in the interval [0, 1] (the success probability in each experiment).
The random numbers are generated using the inverse transform method.
Example:
import gleam/iterator.{Iterator}
import gleam_stats/generator
import gleam_stats/distributions/negbinomial
pub fn example() {
let seed: Int = 5
let seq: Int = 1
let r: Float = 40.
let p: Float = 0.5
assert Ok(out) =
generators.seed_pcg32(seed)
|> negbinomial.negbinomial_random(r, p, 5_000)
let rands: List(Float) = pair.first(out)
let stream: Iterator(Int) = pair.second(out)
}
pub fn negbinomial_variance(r: Int, p: Float) -> Result(
Float,
String,
)
Analytically compute the variance of a discrete negative binomial distribution with parameters ‘r’ > 0 (number of failures until the experiment is stopped) and ‘p’ in the interval [0, 1] (the success probability in each experiment).