context("mixem")
test_that("mixem and mixem_rcpp produce same result",{
# Generate small data set.
set.seed(1)
out <- generate_poismix_data(100,c(1,2,0,0,0,4,0,0))
L <- out$L
w <- out$w
# Run 100 EM updates for the multinomial mixture model. The R and
# C++ implementations should give nearly the same result.
m <- ncol(L)
x0 <- runif(m)
x1 <- mixem(L,w,x0,100)
x2 <- drop(mixem_rcpp(L,w,x0,100))
expect_equal(x1,x2,tolerance = 1e-12,scale = 1)
})
test_that("mixem and mixem_rcpp produce correct result when sum(w > 0) = 1",{
# Generate the data set.
set.seed(1)
n <- 10
out <- generate_poismix_data(n,c(1,2,0,0))
L <- out$L
w <- rep(0,n)
w[8] <- 2
# Get the exact solution.
x0 <- mixture.one.nonzero(L,w)
# Run 20 EM updates for the multinomial mixture model.
x1 <- mixem(L,w,x0,20)
x2 <- drop(mixem_rcpp(L,w,x0,20))
# The solution should not change much after running the EM updates.
expect_equal(x0,x1,tolerance = 1e-12,scale = 1)
expect_equal(x0,x2,tolerance = 1e-12,scale = 1)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.