torch.distributions.Binomial
class Binomial extends Distributionnew Binomial(options: {
total_count: number | Tensor;
probs?: number | Tensor;
logits?: number | Tensor;
} & DistributionOptions)
- readonly
total_count(Tensor) - – Number of Bernoulli trials.
- readonly
arg_constraints(unknown) - readonly
support(unknown) - readonly
probs(Tensor) - readonly
logits(Tensor) - readonly
mean(Tensor) - readonly
mode(Tensor) - readonly
variance(Tensor)
Binomial distribution: discrete distribution for counting successes.
Number of successes in n independent Bernoulli trials with probability p. Essential for:
- Counting successes/failures in fixed number of trials
- Bernoulli process outcomes (coin flips, dice rolls)
- Quality control and defect counting
- A/B testing and conversion counting
- Hypothesis testing (exact binomial test)
- Survey/polling data (number of yes responses)
- Bayesian inference with Beta priors (conjugate)
- Approximation: Normal for large n (central limit theorem)
The probability mass function: P(X = k) = C(n, k) * p^k * (1-p)^(n-k) where C(n, k) = n! / (k! * (n-k)!)
- Discrete support: Samples are non-negative integers 0 to n
- Symmetric: For p=0.5, distribution is symmetric around n/2
- Conjugate prior: Beta distribution is conjugate to Binomial
- Sum property: Sum of independent binomials with same p is binomial
- Limiting distributions: Normal (large n), Poisson (large n, small np)
- Central limit theorem: Standardized → Normal as n → ∞
- Parameter constraints: n must be non-negative integer, p ∈ [0, 1]
- Numerical overflow: Very large n or extreme p can overflow
- Approximations: Normal approximation needs np ≥ 5 and n(1-p) ≥ 5
- Probability range: Binomial(n, 0) = 0, Binomial(n, 1) = n always
Examples
// Basic binomial: 100 trials with 30% success rate
const m = new torch.distributions.Binomial({ total_count: 100, probs: 0.3 });
m.sample(); // Number of successes in 100 trials
// Coin flips: Bernoulli as special case (n=1)
const coin = new torch.distributions.Binomial({ total_count: 1, probs: 0.5 });
coin.sample(); // 0 or 1 (heads/tails)
// Multiple coin flips: 10 trials
const flips = new torch.distributions.Binomial({ total_count: 10, probs: 0.5 });
flips.sample(); // Number of heads in 10 flips
// A/B testing: count successes in treatment group
const num_trials = 1000;
const conversion_rate = 0.05; // 5% conversion
const conversions = new torch.distributions.Binomial({
total_count: num_trials,
probs: conversion_rate
});
const obs_conversions = conversions.sample(); // Observed count
// Batched: different probabilities
const counts = torch.tensor([10, 20, 30]); // Different trial counts
const probs = torch.tensor([0.3, 0.5, 0.7]); // Different probabilities
const dist = new torch.distributions.Binomial({
total_count: counts,
probs: probs
});
const samples = dist.sample(); // Success count for each
// Bayesian inference: using Beta conjugate prior
// Prior: Beta(α, β) represents prior belief about p
// Likelihood: Binomial(n, p) observes k successes
// Posterior: Beta(α+k, β+n-k)
const num_successes = 30;
const num_failures = 70;
const n = num_successes + num_failures;
const prior_alpha = 1, prior_beta = 1; // Uninformative Beta(1,1)
const posterior_alpha = prior_alpha + num_successes;
const posterior_beta = prior_beta + num_failures;
// Posterior distribution over p
// Survey polling: count "yes" responses
const sample_size = 500; // Survey n=500 people
const support_rate = 0.55; // 55% support in population
const survey = new torch.distributions.Binomial({
total_count: sample_size,
probs: support_rate
});
const yes_votes = survey.sample(); // Expected ~275, but varies