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 )
n | Positive integer specifying the number of samples to generate and, consequently, the number of rows of the likelihood matrix L. |
---|---|
m | Integer 2 or greater specifying the number of mixture components. |
simtype | The type of data to simulate. If |
log | If |
normalize.rows | If |
simulatemixdata
returns a list with three list
elements:
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 ashr
package.
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 1 +
s[j]^2
. If 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)