Simulate a data set, then compute the conditional likelihood matrix under a univariate normal likelihood and a mixture-of-normals prior. This models a simple nonparametric Empirical Bayes method applied to simulated data.
simulatemixdata(n, m, simtype = c("n", "nt"), log = FALSE, normalize.rows = !log)
Positive integer specifying the number of samples to generate and, consequently, the number of rows of the likelihood matrix L.
Integer 2 or greater specifying the number of mixture components.
The type of data to simulate. If
simulatemixdata returns a list with three list
The vector of simulated random numbers (it has length n).
The standard deviations of the mixture components in the
mixture-of-normals prior. The rules for selecting the standard
deviations are based on the
autoselect.mixsd function from
The n x m conditional likelihood matrix, in which
individual entries (i,j) of the likelihood matrix are given by the
normal density function with mean zero and variance
normalize.rows = TRUE, the entries in each row
are normalized such that the larger entry in each row is 1. If
log = TRUE, the matrix of log-likelihoods is returned.
# Generate the likelihood matrix for a data set with 1,000 samples # and a nonparametric Empirical Bayes model with 20 mixture # components. dat <- simulatemixdata(1000,20)