innovate.fitters package

Submodules

innovate.fitters.batched_fitter module

class innovate.fitters.batched_fitter.BatchedFitter(model: DiffusionModel, fitter)[source]

Bases: object

A fitter class for fitting a model to multiple datasets in a batch.

fit(t_batched: Sequence[Sequence[float]], y_batched: Sequence[Sequence[float]])[source]

Fits the model to a batch of datasets.

Parameters:
  • t_batched – A sequence of time sequences.

  • y_batched – A sequence of adoption sequences.

predict(t_batched: Sequence[Sequence[float]])[source]

Makes predictions for a batch of datasets.

Parameters:

t_batched – A sequence of time sequences.

innovate.fitters.bootstrap_fitter module

class innovate.fitters.bootstrap_fitter.BootstrapFitter(fitter: Any, n_bootstraps: int = 100)[source]

Bases: object

A fitter class that uses bootstrapping to estimate parameter uncertainty.

fit(model: DiffusionModel, t: Sequence[float], y: Sequence[float], **kwargs) None[source]
get_confidence_intervals(alpha: float = 0.05) Dict[str, Dict[str, float]][source]

Returns confidence intervals for each parameter.

get_parameter_estimates() Dict[str, List[float]][source]

Returns a dictionary of parameter names to lists of bootstrapped values.

get_standard_errors() Dict[str, float][source]

Returns standard errors for each parameter.

innovate.fitters.jax_fitter module

innovate.fitters.mom_fitter module

class innovate.fitters.mom_fitter.MoMFitter[source]

Bases: object

Fitter for the Bass Diffusion Model using the Method of Moments (MoM). This fitter is specifically designed for the BassModel.

fit(model: DiffusionModel, t: Sequence[float], y: Sequence[float]) DiffusionModel[source]

Fits the BassModel using the Method of Moments.

Parameters:
  • model – An instance of BassModel.

  • t – Time points.

  • y – Cumulative adoption data.

Returns:

The fitted BassModel instance.

property params_: Dict[str, float]
innovate.fitters.mom_fitter.estimate_bass_mom(t: Sequence[float], y: Sequence[float]) Tuple[float, float, float][source]

Estimates the parameters (p, q, m) of the Bass Diffusion Model using the Method of Moments. This implementation uses a linear regression approach based on incremental adoptions.

Parameters:
  • t – A sequence of time points.

  • y – A sequence of cumulative adoptions corresponding to the time points.

Returns:

A tuple (p, q, m) representing the estimated parameters.

innovate.fitters.scipy_fitter module

class innovate.fitters.scipy_fitter.ScipyFitter[source]

Bases: object

A fitter class that uses SciPy’s curve_fit for model estimation.

fit(model: DiffusionModel, t: Sequence[float], y: Sequence[float], p0: Sequence[float] = None, bounds: tuple = None, weights: Sequence[float] = None, **kwargs) Self[source]

Fits a DiffusionModel instance using scipy.optimize.curve_fit.

Parameters:
  • model – An instance of a DiffusionModel (e.g., BassModel, GompertzModel, LogisticModel).

  • t – Time points (independent variable).

  • y – Observed adoption data (dependent variable).

  • p0 – Initial guesses for the parameters. If None, model.initial_guesses() is used.

  • bounds – Bounds for the parameters. If None, model.bounds() is used.

  • weights – Weights for the observed data points.

  • kwargs – Additional keyword arguments to pass to scipy.optimize.curve_fit.

Returns:

The fitter instance.

Raises:

RuntimeError – If fitting fails.

Module contents