Learn R Programming

extraDistr (version 1.8.1)

NormalMix: Mixture of normal distributions

Description

Density, distribution function and random generation for the mixture of normal distributions.

Usage

dmixnorm(x, mean, sd, alpha, log = FALSE)
pmixnorm(q, mean, sd, alpha, lower.tail = TRUE, log.p = FALSE)
rmixnorm(n, mean, sd, alpha)

Arguments

x, q
vector of quantiles.
mean
matrix (or vector) of means.
sd
matrix (or vector) of standard deviations.
alpha
matrix (or vector) of mixing proportions; mixing proportions need to sum up to 1.
log, log.p
logical; if TRUE, probabilities p are given as log(p).
lower.tail
logical; if TRUE (default), probabilities are $P[X \le x]$ otherwise, $P[X > x]$.
n
number of observations. If length(n) > 1, the length is taken to be the number required.
p
vector of probabilities.

Details

Probability density function $$ f(x) = \alpha_1 f_1(x; \mu_1, \sigma_1) + \dots + \alpha_k f_k(x; \mu_k, \sigma_k) $$

Cumulative distribution function $$ F(x) = \alpha_1 F_1(x; \mu_1, \sigma_1) + \dots + \alpha_k F_k(x; \mu_k, \sigma_k) $$

where $sum(\alpha[i]) == 1$.

Examples

Run this code

x <- rmixnorm(1e5, c(0.5, 3, 6), c(3, 1, 1), c(1/3, 1/3, 1/3))
xx <- seq(-20, 20, by = 0.1)
hist(x, 100, freq = FALSE)
lines(xx, dmixnorm(xx, c(0.5, 3, 6), c(3, 1, 1), c(1/3, 1/3, 1/3)), col = "red")
hist(pmixnorm(x, c(0.5, 3, 6), c(3, 1, 1), c(1/3, 1/3, 1/3)))
plot(ecdf(x))
lines(xx, pmixnorm(xx, c(0.5, 3, 6), c(3, 1, 1), c(1/3, 1/3, 1/3)), col = "red", lwd = 2)

Run the code above in your browser using DataLab