dmix {bisque} | R Documentation |
Evaluate a mixture density
Description
Evaluates mixture densities of the form
f(x) = \sum_{j=1}^k f(x|\theta^{(k)}) w_k
where the w_k
are (possibly negative) weights that sum to 1 and
f(x|\theta^{(k)})
are densities that are specified via parameters
\theta^{(k)}
, which are passed in the function argument
params
.
A unique feature of this function is that it is able to evaluate mixture
densities in which some of the mixture weights w_k
are negative.
Usage
dmix(x, f, params, wts, log = FALSE, errorNodesWts = NULL, ...)
Arguments
x |
Points at which the mixture should be evaluated. If the density
is multivariate, then each row of |
f |
Density used in the mixture. The function should be defined so it
is can be called via |
params |
Matrix in which each row contains parameters that define
|
wts |
vector of weights for each mixture component |
log |
TRUE to return the log of the mixture density |
errorNodesWts |
list with elements |
... |
additional arguments to be passed to |
Examples
# evaluate mixture density at these locations
x = seq(0, 1, length.out = 100)
# density will be a mixture of beta distributions
f = function(x, theta, log = FALSE) {
dbeta(x, shape1 = theta[1], shape2 = theta[2], log = log)
}
# beta parameters are randomly assigned
params = matrix(exp(2*runif(10)), ncol=2)
# mixture components are equally weighted
wts = rep(1/nrow(params), nrow(params))
# evaluate mixture density
fmix = dmix(x = x, f = f, params = params, wts = wts)
# plot mixture density
plot(x, fmix, type='l', ylab = expression(f(x)),
ylim = c(0, 4))
# plot component densities
for(i in 1:length(wts)){
curve(f(x, params[i,]), col = 2, add = TRUE)
}