Solves the following optimization problem $$\max_{\pi} \sum_k w_k \log(\sum_j \pi_j \ell_jk).$$ It does this using a weighted EM algorithm.
Arguments
- weight_vec
A vector of weights. Each element of
weight_vec
corresponds to a column oflmat
.- lmat
A matrix of inner weights. The columns are the "individuals" and the rows are the "classes."
- pi_init
The initial values of
pivec
. Each element ofpi_init
corresponds to a row oflmat
.- lambda
The penalty on the pi's. Should be greater than 0 and really really small.
- itermax
The maximum number of EM iterations to take.
- obj_tol
The objective stopping criterion.
Examples
set.seed(2)
n <- 3
p <- 5
lmat <- matrix(stats::runif(n * p), nrow = n)
weight_vec <- seq_len(p)
pi_init <- stats::runif(n)
pi_init <- pi_init / sum(pi_init)
wem(weight_vec = weight_vec,
lmat = lmat,
pi_init = pi_init,
lambda = 0,
itermax = 100,
obj_tol = 10^-6)
#> [,1]
#> [1,] 3.830930e-01
#> [2,] 6.169070e-01
#> [3,] 3.041614e-09