This is a pre-release version (latest).Go to latest (1.18.0)
{ } Raw JSON

bundles / scipy latest / scipy / stats / _qmc / MultinomialQMC

class

scipy.stats._qmc:MultinomialQMC

source: build-install/usr/lib/python3.14/site-packages/scipy/stats/_qmc.py:2477

Signature

class MultinomialQMC(pvals: npt.ArrayLike, n_trials: IntNumber, *, engine: scipy.stats._qmc.QMCEngine | None = None, rng: SeedType = None, seed = None) → None

Members

Summary

QMC sampling from a multinomial distribution.

Parameters

pvals : array_like (k,)

Vector of probabilities of size k, where k is the number of categories. Elements must be non-negative and sum to 1.

n_trials : int

Number of trials.

engine : QMCEngine, optional

Quasi-Monte Carlo engine sampler. If None, Sobol is used.

rng : `numpy.random.Generator`, optional

Pseudorandom number generator state. When rng is None, a new numpy.random.Generator is created using entropy from the operating system. Types other than numpy.random.Generator are passed to numpy.random.default_rng to instantiate a Generator.

Examples

Let's define 3 categories and for a given sample, the sum of the trials of each category is 8. The number of trials per category is determined by the `pvals` associated to each category. Then, we sample this distribution 64 times.
import matplotlib.pyplot as plt
from scipy.stats import qmc
dist = qmc.MultinomialQMC(
    pvals=[0.2, 0.4, 0.4], n_trials=10, engine=qmc.Halton(d=1)
)
sample = dist.random(64)
✓
We can plot the sample and verify that the median of number of trials for each category is following the `pvals`. That would be ``pvals * n_trials = [2, 4, 4]``.
fig, ax = plt.subplots()
ax.yaxis.get_major_locator().set_params(integer=True)
_ = ax.boxplot(sample)
✓
ax.set(xlabel="Categories", ylabel="Trials")
✗
[Text(0.5, 0, 'Categories'), Text(0, 0.5, 'Trials')]
plt.show()
✓
fig-1bd87aa6a52678c1.png

Aliases

  • scipy.stats._qmc.MultinomialQMC

Referenced by