dmix {bisque} | R Documentation |
Evaluates mixture densities of the form
f(x) = ∑_{j=1}^k f(x|θ^{(k)}) w_k
where the w_k are (possibly negative) weights that sum to 1 and
f(x|θ^{(k)}) are densities that are specified via parameters
θ^{(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.
dmix(x, f, params, wts, log = FALSE, errorNodesWts = NULL, ...)
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
f. The number of rows in |
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 |
# 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) }