pymixef.families module

Probability families and link functions used by PyMixEF.

The module follows one likelihood convention throughout: Family.log_prob() returns a normalized log density or log mass, including constants that depend on the observation. Consequently log likelihoods from these families can be used for AIC and compared with other implementations after matching the stated parameterization.

All random methods accept either a numpy.random.Generator or a seed through rng=. The implementations are NumPy/SciPy reference implementations; they are intentionally independent of any automatic-differentiation framework.

pymixef.families.NB1

alias of NegativeBinomial1

pymixef.families.NB2

alias of NegativeBinomial2

class pymixef.families.Bernoulli(*, link=None, **predictors)[source]

Bases: Family

Bernoulli family with success probability mu.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'bernoulli'
support = '{0, 1}'
parameter_names: tuple[str, ...] = ('mu',)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, mu=0.5, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=0.5, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=0.5, **_)[source]
Parameters:

_ (Any)

mean(*, mu=0.5, **_)[source]
Parameters:

_ (Any)

variance(*, mu=0.5, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Beta(*, link=None, **predictors)[source]

Bases: Family

Beta family parameterized by mean mu and precision precision.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'beta'
support = 'open unit interval'
parameter_names: tuple[str, ...] = ('mu', 'precision')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

logcdf(y, *, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

logsf(y, *, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=0.5, **_)[source]
Parameters:

_ (Any)

variance(*, mu=0.5, precision=2.0, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Binomial(trials=None, *, link=None, **predictors)[source]

Bases: Family

Binomial family; observations are successes and trials is explicit.

Parameters:
  • trials (ArrayLike | None)

  • predictors (Any)

name = 'binomial'
support = 'integers from zero through trials'
parameter_names: tuple[str, ...] = ('mu', 'trials')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, mu=0.5, trials=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=0.5, trials=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=0.5, trials=None, **_)[source]
Parameters:

_ (Any)

mean(*, mu=0.5, trials=None, **_)[source]
Parameters:

_ (Any)

variance(*, mu=0.5, trials=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.COMPoisson(*, link=None, max_terms=100_000, tolerance=1e-13, **predictors)[source]

Bases: Family

Conway–Maxwell–Poisson with rate rate and exponent dispersion.

P(Y=y) = rate**y / (y!)**dispersion / Z(rate, dispersion). The rate parameter is not generally the arithmetic mean. Normalizing constants are evaluated by an adaptive log-series and an error is raised if the configured term limit is insufficient.

Parameters:
  • max_terms (int)

  • tolerance (float)

name = 'com-poisson'
support = 'nonnegative integers'
parameter_names: tuple[str, ...] = ('rate', 'dispersion')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, rate=None, mu=None, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, rate=None, mu=None, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, rate=None, mu=None, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, rate=None, mu=None, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, rate=None, mu=None, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Censored(conditional)[source]

Bases: Family

Exact likelihood contributions for exact and censored observations.

kind may be "exact", "left", "right", or "interval". Left censoring uses upper (or y), right censoring uses lower (or y), and interval censoring uses both endpoints.

Parameters:

conditional (Family)

name = 'censored'
log_prob(y=None, *, kind='exact', lower=None, upper=None, **parameters)[source]
cdf(y, **parameters)[source]
rvs(size=None, *, rng=None, **parameters)[source]
pymixef.families.CensoredFamily

alias of Censored

pymixef.families.ConwayMaxwellPoisson

alias of COMPoisson

class pymixef.families.Exponential(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Exponential survival distribution with positive hazard rate.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'exponential'
parameter_names: tuple[str, ...] = ('rate',)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, rate=1.0, **_)[source]
Parameters:

_ (Any)

cdf(time, *, rate=1.0, **_)[source]
Parameters:

_ (Any)

logsf(time, *, rate=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, rate=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, rate=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, rate=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.ExponentialSurvival

alias of Exponential

class pymixef.families.Family(*, link=None, **predictors)[source]

Bases: object

Base class for normalized probability families.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'family'
support = 'declared by subclass'
parameter_names: tuple[str, ...] = ()
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = False
normalized = True
log_prob(y, **parameters)[source]
Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

log_probability(y, **parameters)[source]

Long-form alias for log_prob() used by plugin protocols.

Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

logpdf(y, **parameters)[source]

SciPy-style alias; valid for both density and mass families.

Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

logpmf(y, **parameters)

SciPy-style alias; valid for both density and mass families.

Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

cdf(y, **parameters)[source]
Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

logcdf(y, **parameters)[source]
Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

sf(y, **parameters)[source]
Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

logsf(y, **parameters)[source]
Parameters:
  • y (ArrayLike)

  • parameters (Any)

Return type:

float | NDArray[float64]

rvs(size=None, *, rng=None, **parameters)[source]
Parameters:
  • size (int | tuple[int, ...] | None)

  • rng (Generator | int | None)

  • parameters (Any)

Return type:

NDArray[Any] | generic

mean(**parameters)[source]
Parameters:

parameters (Any)

Return type:

float | NDArray[float64]

variance(**parameters)[source]
Parameters:

parameters (Any)

Return type:

float | NDArray[float64]

moments(**parameters)[source]

Return the common first two moments.

Parameters:

parameters (Any)

Return type:

dict[str, float | NDArray[float64]]

random(size=None, *, rng=None, **parameters)[source]

Alias for rvs().

Parameters:
  • size (int | tuple[int, ...] | None)

  • rng (Generator | int | None)

  • parameters (Any)

Return type:

NDArray[Any] | generic

simulate(size=None, *, rng=None, **parameters)

Alias for rvs().

Parameters:
  • size (int | tuple[int, ...] | None)

  • rng (Generator | int | None)

  • parameters (Any)

Return type:

NDArray[Any] | generic

class pymixef.families.Gamma(*, link=None, **predictors)[source]

Bases: Family

Gamma family in mean-dispersion form.

E(Y)=mu and Var(Y)=dispersion * mu**2. Thus shape is 1 / dispersion and scale is mu * dispersion.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'gamma'
support = 'positive real'
parameter_names: tuple[str, ...] = ('mu', 'dispersion')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

logcdf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

logsf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Gaussian(*, link=None, **predictors)[source]

Bases: Family

Gaussian N(mu, sigma**2) family.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'gaussian'
support = 'real'
parameter_names: tuple[str, ...] = ('mu', 'sigma')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=0.0, sigma=1.0, **_)[source]
Parameters:
  • y (ArrayLike)

  • mu (ArrayLike)

  • sigma (ArrayLike)

  • _ (Any)

cdf(y, *, mu=0.0, sigma=1.0, **_)[source]
Parameters:
  • y (ArrayLike)

  • mu (ArrayLike)

  • sigma (ArrayLike)

  • _ (Any)

logcdf(y, *, mu=0.0, sigma=1.0, **_)[source]
Parameters:
  • y (ArrayLike)

  • mu (ArrayLike)

  • sigma (ArrayLike)

  • _ (Any)

logsf(y, *, mu=0.0, sigma=1.0, **_)[source]
Parameters:
  • y (ArrayLike)

  • mu (ArrayLike)

  • sigma (ArrayLike)

  • _ (Any)

rvs(size=None, *, rng=None, mu=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=0.0, **_)[source]
Parameters:

_ (Any)

variance(*, sigma=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.GenPoisson

alias of GeneralizedPoisson

class pymixef.families.GeneralizedPoisson(*, link=None, **predictors)[source]

Bases: Family

Consul–Jain generalized Poisson in mean-dispersion form.

The underlying parameters are lambda = mu * (1-dispersion) and theta = dispersion. The mass is lambda * (lambda + theta*y)**(y-1) * exp(-(lambda+theta*y))/y!. This gives arithmetic mean mu for the regular infinite-support case 0 <= theta < 1. Negative theta has finite support.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'generalized-poisson'
support = 'nonnegative integers subject to lambda + dispersion*y > 0'
parameter_names: tuple[str, ...] = ('mu', 'dispersion')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, mu=1.0, dispersion=0.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, dispersion=0.0, **parameters)[source]
Parameters:

parameters (Any)

rvs(size=None, *, rng=None, mu=1.0, dispersion=0.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, dispersion=0.0, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Gompertz(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Gompertz distribution with hazard rate * exp(shape*time).

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'gompertz'
parameter_names: tuple[str, ...] = ('rate', 'shape')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

cdf(time, *, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

logsf(time, *, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

mean(*, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

variance(*, rate=1.0, shape=0.1, **_)[source]
Parameters:

_ (Any)

pymixef.families.GompertzSurvival

alias of Gompertz

class pymixef.families.Hurdle(conditional, **kwargs)[source]

Bases: MixtureFamily

Zero hurdle plus the conditional distribution truncated above zero.

Parameters:

conditional (Family)

name = 'hurdle'
log_prob(y, *, probability=None, **parameters)[source]
cdf(y, *, probability=None, **parameters)[source]
rvs(size=None, *, rng=None, probability=None, **parameters)[source]
mean(**parameters)[source]
variance(**parameters)[source]
pymixef.families.HurdleFamily

alias of Hurdle

pymixef.families.InverseGauss

alias of InverseGaussian

class pymixef.families.InverseGaussian(*, link=None, **predictors)[source]

Bases: Family

Inverse-Gaussian family with E(Y)=mu and Var(Y)=phi*mu**3.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'inverse-gaussian'
support = 'positive real'
parameter_names: tuple[str, ...] = ('mu', 'dispersion')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

logcdf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

logsf(y, *, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, dispersion=1.0, **_)[source]
Parameters:

_ (Any)

Bases: object

A differentiable scalar response link.

Parameters:
  • name (str)

  • _link (Callable[[NDArray[float64]], NDArray[float64]])

  • _inverse (Callable[[NDArray[float64]], NDArray[float64]])

  • _derivative (Callable[[NDArray[float64]], NDArray[float64]])

name: str
inverse(linear_predictor)[source]
Parameters:

linear_predictor (ArrayLike)

Return type:

float | NDArray[float64]

derivative(mean)[source]

Derivative of the link with respect to the mean.

Parameters:

mean (ArrayLike)

Return type:

float | NDArray[float64]

class pymixef.families.LogLogistic(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Log-logistic survival distribution with positive shape and scale.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'log-logistic'
parameter_names: tuple[str, ...] = ('shape', 'scale')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

cdf(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

logsf(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.LogLogisticSurvival

alias of LogLogistic

class pymixef.families.LogNormal(*, link=None, **predictors)[source]

Bases: Family

Lognormal family parameterized by log-median meanlog and sigma.

exp(meanlog) is the median. The arithmetic mean is exp(meanlog + sigma**2 / 2).

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'lognormal'
support = 'positive real'
parameter_names: tuple[str, ...] = ('meanlog', 'sigma')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

logcdf(y, *, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

logsf(y, *, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

mean(*, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

variance(*, meanlog=0.0, sigma=1.0, mu=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.LogNormalSurvival(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Lognormal accelerated-failure-time distribution.

meanlog is the location of log time and sigma its standard deviation. The event likelihood uses the density while a right-censored observation uses the survival probability.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'lognormal-survival'
parameter_names: tuple[str, ...] = ('meanlog', 'sigma')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

cdf(time, *, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

logsf(time, *, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, meanlog=0.0, sigma=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.Lognormal

alias of LogNormal

class pymixef.families.Multinomial(*, link=None, **predictors)[source]

Bases: Family

Categorical/multinomial-one-trial family.

Supply either normalized probabilities or category logits. When logits has K-1 columns, a zero baseline logit is appended.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'multinomial'
support = 'categories 0, ..., K-1'
parameter_names: tuple[str, ...] = ('probabilities',)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, probabilities=None, logits=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, probabilities=None, logits=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, probabilities=None, logits=None, **_)[source]
Parameters:

_ (Any)

mean(*, probabilities=None, logits=None, **_)[source]
Parameters:

_ (Any)

variance(*, probabilities=None, logits=None, **_)[source]
Parameters:

_ (Any)

pymixef.families.NegativeBinomial

alias of NegativeBinomial2

class pymixef.families.NegativeBinomial1(dispersion=None, *, link=None, **predictors)[source]

Bases: NegativeBinomial2

NB1 family with Var(Y)=mu * (1 + dispersion).

Parameters:
  • dispersion (Any)

  • predictors (Any)

name = 'negative-binomial-1'
variance(*, mu=1.0, dispersion=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.NegativeBinomial2(dispersion=None, *, link=None, **predictors)[source]

Bases: Family

NB2 family with Var(Y)=mu + mu**2 / dispersion.

dispersion is the conventional positive size/shape parameter.

Parameters:
  • dispersion (Any)

  • predictors (Any)

name = 'negative-binomial-2'
support = 'nonnegative integers'
parameter_names: tuple[str, ...] = ('mu', 'dispersion')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, mu=1.0, dispersion=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, dispersion=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=1.0, dispersion=None, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, dispersion=None, **_)[source]
Parameters:

_ (Any)

pymixef.families.Normal

alias of Gaussian

class pymixef.families.Ordinal(*, link=None, thresholds=None, **predictors)[source]

Bases: Family

Cumulative-link ordinal family with ordered zero-based categories.

Parameters:
  • link (str | Link | None)

  • thresholds (ArrayLike | None)

name = 'ordinal'
support = 'ordered categories 0, ..., len(thresholds)'
parameter_names: tuple[str, ...] = ('eta', 'thresholds')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
probabilities(*, eta=0.0, thresholds=None)[source]
log_prob(y, *, eta=0.0, thresholds=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, eta=0.0, thresholds=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, eta=0.0, thresholds=None, **_)[source]
Parameters:

_ (Any)

mean(*, eta=0.0, thresholds=None, **_)[source]
Parameters:

_ (Any)

variance(*, eta=0.0, thresholds=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.PiecewiseExponential(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Piecewise-constant hazard with explicit interval break points.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'piecewise-exponential'
parameter_names: tuple[str, ...] = ('rates', 'breaks')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, rates, breaks, **_)[source]
Parameters:

_ (Any)

cdf(time, *, rates, breaks, **_)[source]
Parameters:

_ (Any)

logsf(time, *, rates, breaks, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, rates, breaks, **_)[source]
Parameters:

_ (Any)

mean(*, rates, breaks, **_)[source]
Parameters:

_ (Any)

variance(*, rates, breaks, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Poisson(*, link=None, **predictors)[source]

Bases: Family

Poisson family with mean/rate mu.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'poisson'
support = 'nonnegative integers'
parameter_names: tuple[str, ...] = ('mu',)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

discrete = True
log_prob(y, *, mu=1.0, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.Student

alias of StudentT

class pymixef.families.StudentT(df=None, *, link=None, **predictors)[source]

Bases: Family

Student-t location-scale family with degrees of freedom df.

Parameters:
  • df (float | None)

  • predictors (Any)

name = 'student-t'
support = 'real'
parameter_names: tuple[str, ...] = ('mu', 'sigma', 'df')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=0.0, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=0.0, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

logcdf(y, *, mu=0.0, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

logsf(y, *, mu=0.0, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=0.0, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

mean(*, mu=0.0, df=None, **_)[source]
Parameters:

_ (Any)

variance(*, sigma=1.0, df=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Truncated(conditional, *, lower=-np.inf, upper=np.inf)[source]

Bases: Family

Family conditioned on lower < Y <= upper.

For continuous families the distinction between open and closed endpoints is immaterial. For discrete families lower is excluded and upper is included, which makes one-sided zero truncation lower=0 explicit.

Parameters:

conditional (Family)

name = 'truncated'
log_prob(y, **parameters)[source]
cdf(y, **parameters)[source]
rvs(size=None, *, rng=None, **parameters)[source]
pymixef.families.TruncatedFamily

alias of Truncated

class pymixef.families.Tweedie(power=1.5, *, link=None, max_terms=100_000, **predictors)[source]

Bases: Family

Tweedie exponential-dispersion family.

Exact normalized reference likelihood and RNG are implemented for 1 < power < 2 (compound Poisson–Gamma), and for the canonical limits power 0 (Gaussian), 1 (Poisson), 2 (Gamma), and 3 (inverse Gaussian). Other powers are rejected rather than evaluated with an unnormalized quasi-likelihood. Compound-series evaluation is intentionally capped; very large Poisson intensities raise a stable RuntimeError.

Parameters:
  • power (float)

  • max_terms (int)

name = 'tweedie'
support = 'depends on power'
parameter_names: tuple[str, ...] = ('mu', 'dispersion', 'power')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_prob(y, *, mu=1.0, dispersion=1.0, power=None, **_)[source]
Parameters:

_ (Any)

cdf(y, *, mu=1.0, dispersion=1.0, power=None, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, mu=1.0, dispersion=1.0, power=None, **_)[source]
Parameters:

_ (Any)

mean(*, mu=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, mu=1.0, dispersion=1.0, power=None, **_)[source]
Parameters:

_ (Any)

class pymixef.families.Weibull(*, link=None, **predictors)[source]

Bases: SurvivalFamily

Weibull survival distribution with shape and scale.

Parameters:
  • link (str | Link | None)

  • predictors (Any)

name = 'weibull'
parameter_names: tuple[str, ...] = ('shape', 'scale')
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log_density(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

cdf(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

logsf(time, *, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

rvs(size=None, *, rng=None, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

mean(*, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

variance(*, shape=1.0, scale=1.0, **_)[source]
Parameters:

_ (Any)

pymixef.families.WeibullSurvival

alias of Weibull

class pymixef.families.ZeroInflated(conditional, *, probability=None, link=None, **predictors)[source]

Bases: MixtureFamily

Point-mass-at-zero mixture with a normalized conditional family.

Parameters:
  • conditional (Family)

  • probability (Any)

name = 'zero-inflated'
log_prob(y, *, probability=None, **parameters)[source]
cdf(y, *, probability=None, **parameters)[source]
rvs(size=None, *, rng=None, probability=None, **parameters)[source]
mean(*, probability=None, **parameters)[source]
variance(*, probability=None, **parameters)[source]
pymixef.families.ZeroInflatedFamily

alias of ZeroInflated

Resolve a link name or return an existing Link.

Parameters:
  • value (str | Link | None)

  • default (Link)

Return type:

Link

Bases: object

Namespace containing built-in Link objects.

identity = Link(name='identity', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

log = Link(name='log', _link=<ufunc 'log'>, _inverse=<ufunc 'exp'>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

logit = Link(name='logit', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

probit = Link(name='probit', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

cloglog = Link(name='cloglog', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

cauchit = Link(name='cauchit', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

inverse = Link(name='inverse', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]

inverse_squared = Link(name='inverse-squared', _link=<function <lambda>>, _inverse=<function <lambda>>, _derivative=<function <lambda>>)
Parameters:

mean (ArrayLike)

Return type:

float | NDArray[np.float64]