Fit a Blended mixture using an ECME-Algorithm
Usage
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, thatbreaks
andbandwidths
are not a placeholder and thatweights
are to be estimated.- obs
Set of observations as produced by
trunc_obs()
or convertible viaas_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()
ifstart
is missing.
Value
A list with elements
params
the fitted parameters in the same structure asinit
.params_hist
(iftrace
is TRUE) the history of parameters (after each e- and m- step)iter
the number of outer EM-iterationslogLik
the final log-likelihood
See also
Other distribution fitting functions:
fit_dist()
,
fit_erlang_mixture()
,
fit_mixture()
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)
}