Learn R Programming

mixtools (version 1.0.4)

density.npEM: Normal kernel density estimate for nonparametric EM output

Description

Takes an object of class npEM and returns an object of class density giving the kernel density estimate for the selected component and, if applicable, the selected block.

Usage

"density"(x, u=NULL, component=1, block=1, scale=FALSE, ...)

Arguments

x
An object of class npEM such as the output of the npEM or spEMsymloc functions.
u
Vector of points at which the density is to be evaluated
component
Mixture component number; should be an integer from 1 to the number of columns of x$posteriors.
block
Block of repeated measures. Only applicable in repeated measures case, for which x$blockid exists; should be an integer from 1 to max(x$blockid).
scale
Logical: If TRUE, multiply the density values by the corresponding mixing proportions found in x$lambdahat
...
Additional arguments; not used by this method.

Value

density.npEM returns a list of type "density". See density for details. In particular, the output of density.npEM may be used directly by functions such as plot or lines.

Details

The bandwidth is taken to be the same as that used to produce the npEM object, which is given by x$bandwidth.

See Also

npEM, spEMsymloc, plot.npEM

Examples

Run this code
## Look at histogram of Old Faithful waiting times
data(faithful)
Minutes <- faithful$waiting
hist(Minutes, freq=FALSE)

## Superimpose equal-variance normal mixture fit:
set.seed(100)
nm <- normalmixEM(Minutes, mu=c(50,80), sigma=5, arbvar=FALSE, fast=TRUE)
x <- seq(min(Minutes), max(Minutes), len=200)
for (j in 1:2) 
  lines(x, nm$lambda[j]*dnorm(x, mean=nm$mu[j], sd=nm$sigma), lwd=3, lty=2)
  
## Superimpose several semiparametric fits with different bandwidths:
bw <- c(1, 3, 5)
for (i in 1:3) {
  sp <- spEMsymloc(Minutes, c(50,80), bw=bw[i])
  for (j in 1:2) 
    lines(density(sp, component=j, scale=TRUE), col=1+i, lwd=2)    
}
legend("topleft", legend=paste("Bandwidth =",bw), fill=2:4)

Run the code above in your browser using DataLab