fit_blended function

Fit a Blended mixture using an ECME-Algorithm

Fit a Blended mixture using an ECME-Algorithm

fit_blended( dist, obs, start, min_iter = 0L, max_iter = 100L, skip_first_e = FALSE, tolerance = 1e-05, trace = FALSE, ... )

Arguments

  • dist: A BlendedDistribution. It is assumed, that breaks and bandwidths are not a placeholder and that weights are to be estimated.
  • obs: Set of observations as produced by trunc_obs() or convertible via as_trunc_obs().
  • start: Initial values of all placeholder parameters. If missing, starting values are obtained from fit_dist_start().
  • min_iter: Minimum number of EM-Iterations
  • max_iter: Maximum number of EM-Iterations (weight updates)
  • skip_first_e: Skip the first E-Step (update Probability weights)? This can help if the initial values cause a mixture component to vanish in the first E-Step before the starting values can be improved.
  • tolerance: Numerical tolerance.
  • trace: Include tracing information in output? If TRUE, additional tracing information will be added to the result list.
  • ...: Passed to fit_dist_start() if start is missing.

Returns

A list with elements

  • params the fitted parameters in the same structure as init.
  • params_hist (if trace is TRUE) the history of parameters (after each e- and m- step)
  • iter the number of outer EM-iterations
  • logLik the final log-likelihood

Examples

dist <- dist_blended( list( dist_exponential(), dist_genpareto() ) ) params <- list( probs = list(0.9, 0.1), dists = list( list(rate = 2.0), list(u = 1.5, xi = 0.2, sigmau = 1.0) ), breaks = list(1.5), bandwidths = list(0.3) ) x <- dist$sample(100L, with_params = params) dist$default_params$breaks <- params$breaks dist$default_params$bandwidths <- params$bandwidths if (interactive()) { fit_blended(dist, x) }

See Also

Other distribution fitting functions: fit_dist(), fit_erlang_mixture(), fit_mixture()