tests/testthat/test-param_learn.R

gmm_1 <- list(alpha = 1, mu = matrix(0, dimnames = list("A", NULL)),
              sigma = list(matrix(1, dimnames = list("A", "A"))))
class(gmm_1) <- "gmm"
gmm_2 <- list(alpha = c(0.4, 0.6),
              mu = matrix(c(2, 0, 3, 1), 2, dimnames = list(c("B", "A"), NULL)),
              sigma = list(matrix(c(2, 1, 1, 1), 2,
                                  dimnames = list(c("B", "A"), c("B", "A"))),
                           matrix(c(5, 3, 3, 2), 2,
                                  dimnames = list(c("B", "A"), c("B", "A")))))
class(gmm_2) <- "gmm"
gmm_3 <- list(alpha = 1, mu = matrix(4.833333, dimnames = list("A", NULL)),
              sigma = list(matrix(8.40619, dimnames = list("A", "A"))))
class(gmm_3) <- "gmm"
gmm_4 <- list(alpha = c(0.5382973, 0.4617027),
              mu = matrix(c(3.848964, 5.760557, 6.70297, 3.752287), 2,
                          dimnames = list(c("B", "A"), NULL)),
              sigma = list(matrix(c(3.495108, 1.211245, 1.211245, 5.175567), 2,
                                  dimnames = list(c("B", "A"), c("B", "A"))),
                           matrix(c(3.162533, 4.930844, 4.930844, 8.208434), 2,
                                  dimnames = list(c("B", "A"), c("B", "A")))))
class(gmm_4) <- "gmm"
gmm_5 <- list(alpha = c(0.4, 0.6),
              mu = matrix(c(2, 0, 4, 3, 1, 5), 3,
                          dimnames = list(c("B", "A", "A.1"), NULL)),
              sigma = list(matrix(c(2, 1, 2, 1, 1, 1, 2, 1, 3), 3,
                                  dimnames = list(c("B", "A", "A.1"),
                                                  c("B", "A", "A.1"))),
                           matrix(c(5, 3, 2, 3, 2, 1, 2, 1, 4), 3,
                                  dimnames = list(c("B", "A", "A.1"),
                                                  c("B", "A", "A.1")))))
class(gmm_5) <- "gmm"
gmm_6 <- list(alpha = 1, mu = matrix(4.5, dimnames = list("A", NULL)),
              sigma = list(matrix(13.50333, dimnames = list("A", "A"))))
class(gmm_6) <- "gmm"
gmm_7 <- list(alpha = c(0.5, 0.5),
              mu = matrix(c(6, 9, 4, 0), 2, dimnames = list(c("B", "A"), NULL)),
              sigma = list(matrix(c(0.005, 0, 0, 0.005), 2,
                                  dimnames = list(c("B", "A"), c("B", "A"))),
                           matrix(c(0.005, 0, 0, 0.005), 2,
                                  dimnames = list(c("B", "A"), c("B", "A")))))
class(gmm_7) <- "gmm"
gmm_8 <- list(alpha = 1, mu = matrix(5, dimnames = list("A", NULL)),
              sigma = list(matrix(3.602, dimnames = list("A", "A"))))
class(gmm_8) <- "gmm"
gmm_9 <- list(alpha = c(0.5, 0.5),
              mu = matrix(c(2.5, 4.5, 6, 8, 5.5, 1.5), 3,
                          dimnames = list(c("B", "A", "A.1"), NULL)),
              sigma = list(matrix(c(1.503333, - 1.5, 3, - 1.5, 1.503333, - 3, 3,
                                    - 3, 6.003333),
                                  3,
                                  dimnames = list(c("B", "A", "A.1"),
                                                  c("B", "A", "A.1"))),
                           matrix(c(0.67, 1.666667, 1, 1.666667, 4.17, 2.5, 1,
                                    2.5, 1.503333),
                                  3,
                                  dimnames = list(c("B", "A", "A.1"),
                                                  c("B", "A", "A.1")))))
class(gmm_9) <- "gmm"

gmbn_1 <- list(A = gmm_1, B = gmm_2)
class(gmbn_1) <- "gmbn"
gmbn_2 <- list(A = gmm_3, B = gmm_4)
class(gmbn_2) <- "gmbn"
gmbn_3 <- list(A = gmm_1, B = gmm_5)
class(gmbn_3) <- "gmbn"
gmbn_4 <- list(A = gmm_6, B = gmm_7)
class(gmbn_4) <- "gmbn"
gmbn_5 <- list(A = gmm_8, B = gmm_9)
class(gmbn_5) <- "gmbn"

gmdbn_1 <- list(b_1 = gmbn_1, b_2 = gmbn_3)
class(gmdbn_1) <- "gmdbn"
gmdbn_2 <- list(b_1 = gmbn_4, b_2 = gmbn_5)
class(gmdbn_2) <- "gmdbn"

test_that("learn the parameters of a gmbn object", {
  expect_equal(param_learn(gmbn_1,
                           data.frame(A = c(0, 3, 6, 9, 3, 8),
                                      B = c(4, 7, 1, 6, 4, 9)),
                           regul = 0.01, max_iter_em = 5),
               list(gmgm = gmbn_2,
                    evol_loglik =
                      list(global = c(old = - 209.71807, new = - 27.45113),
                           local = matrix(c(- 105.01363, - 15.39994,
                                            - 104.70444, - 12.05119),
                                          2,
                                          dimnames = list(c("old", "new"),
                                                          c("A", "B"))))),
               tolerance = 0.01)
})

test_that("learn the parameters of a gmdbn object", {
  expect_equal(param_learn(gmdbn_1,
                           data.frame(seq = c(1, 1, 1, 2, 2, 2),
                                      A = c(0, 3, 6, 9, 3, 8),
                                      B = c(4, 7, 1, 6, 4, 9)),
                           col_seq = "seq", regul = 0.01, max_iter_em = 5),
               list(gmgm = gmdbn_2,
                    evol_loglik =
                      list(global = c(old = - 208.136536, new = - 3.779152),
                           local =
                             list(b_1 = matrix(c(- 42.337877, - 5.940443,
                                                 - 41.48239, 3.46044),
                                               2,
                                               dimnames = list(c("old", "new"),
                                                               c("A", "B"))),
                                  b_2 = matrix(c(- 62.675754, - 8.737345,
                                                 - 61.640511, 7.438196),
                                               2,
                                               dimnames = list(c("old", "new"),
                                                               c("A", "B")))))),
               tolerance = 0.01)
})

Try the gmgm package in your browser

Any scripts or data that you put into this service are public.

gmgm documentation built on Sept. 9, 2022, 1:07 a.m.