tests/testthat/test_compare_with_mixtools.R

test_that("Compare mixR with mixtools for normal mixtures", {
  skip_on_cran()
  skip_on_bioc()
  
  # Arrange
  x = c(-0.429400536602601, 0.162010149716281, -3.17054746835854, 0.373705619911683,
        -0.80429729241256, 0.923022033500558, -1.81296118115276, 1.48477630658963,
        0.509796985059975, -1.19673682455782, -0.0383406596663621, 1.62703076926252,
        1.10663181681395, 1.2977549050602, -0.530487999126224, 0.586426384647559,
        -1.46830671121146, -0.862214632174845, -1.31043128283346, -1.15888895551618,
        -0.699645776132561, 0.0096628330180341, -2.02853975895703, -0.0694709147694598,
        0.877414694029549, -0.967976844745967, 1.11370723893191, -0.244643820108224,
        1.63384440842333, -0.789833336636973, -1.4621521685602, -0.434881033184263,
        -1.96204953269541, -0.00784395562823364, -1.85992617593592, -1.77637379686295,
        1.05585696137757, -0.0589836771931402, 0.386704628258097, 0.901125816036791,
        1.4257620504981, 0.40449178268071, -0.0258967091137805, 2.22446073468128,
        1.41422815573527, 0.662836208415823, 1.46776900904065, -0.503061978558018,
        1.08104257109407, 1.33654710593492, 0.579201339480091, 0.272925565639441,
        1.68610349913612, 1.9861095160581, 1.42454577082464, -0.436941621462757,
        0.186129780781515, 1.34975253037202, 1.98794209105315, 0.341088910553767,
        0.982016841884978, 0.655989909775022, 0.169651275996377, 2.07510480131931)
  
  # Act
  actual_output1 = mixfit(x, ncomp = 2)
  actual_output2 = mixtools::normalmixEM(x, k = 2)
  
  # Assert
  expect_equal(actual_output1$pi, actual_output2$lambda, tolerance = 1e-2)
  expect_equal(actual_output1$mu, actual_output2$mu, tolerance = 1e-2)
  expect_equal(actual_output1$sd, actual_output2$sigma, tolerance = 1e-2)
  expect_equal(actual_output1$loglik, actual_output2$loglik, tolerance = 1e-2)
  
})


test_that("Compare mixR with mixtools for gamma mixtures", {
  skip_on_cran()
  skip_on_bioc()
  
  # Arrange
  # set.seed(4)
  # x = rmixgamma(100, c(0.3, 0.7), c(1.5, 4), c(1, 1))
  x = c(0.737282887057245, 0.669151738903973, 3.0550205312093, 1.85373390718685, 
        0.310312170728521, 1.06932380256818, 3.25991987241765, 1.71987164086492, 
        1.18057110555297, 1.5289469726302, 1.12719903200373, 1.23348555940815, 
        0.62472365539016, 1.12800807100084, 1.45695103796523, 4.67259578834858, 
        0.930476646831949, 2.0653605356643, 0.997908362667444, 2.5167447778597, 
        1.3059345604871, 2.27881102512773, 0.596320657212758, 1.1997422024859, 
        3.4557580223342, 1.48127672539276, 0.84283475101908, 0.791961616875531, 
        0.392387446735569, 1.33225834324506, 5.25156829801265, 2.39163077739572, 
        5.45549929449615, 2.83279489493364, 3.5140808537938, 3.73881161016938, 
        3.24924484448778, 3.95555173039128, 4.06182455804466, 3.12838735112444, 
        3.30989724629822, 3.85773163988959, 3.72330204398945, 2.56493844211852, 
        4.99350265725243, 2.6906547131488, 3.09278730685162, 3.65031538720081, 
        3.03847444494887, 4.41018576114012, 3.70825754977278, 4.3220907876966, 
        5.63527958761936, 3.72884644598393, 4.61792395166981, 3.51981443099945, 
        5.81172804843568, 4.94899265441581, 3.31685068939921, 5.24517201214943, 
        3.6670892385508, 2.57166501798731, 2.92518547293442, 4.15876331163962, 
        3.88318922442146, 7.12085799531385, 2.71948790985402, 5.20541204624909, 
        3.23311049582059, 4.5816929840271, 3.82882835841046, 3.18899104124271, 
        4.88684853075119, 3.60664941203729, 4.72058495742065, 3.53228113720234, 
        3.77159341813681, 2.31524759268227, 5.55756448431181, 4.67686099776576, 
        2.86921282497598, 4.30403315683404, 4.25421738794564, 3.34913522519378, 
        4.18134678695866, 3.76358553029534, 4.92473203107161, 3.03712056368614, 
        5.7468296984434, 3.20236357393419, 3.5367274818947, 5.93868630048978, 
        3.5500395383361, 3.29611083566205, 3.00394000681805, 4.1471107700129, 
        7.4834866698749, 5.11964278823513, 2.76437801807261, 2.98372265539294)
  
  # Act
  actual_output1 = mixfit(x, ncomp = 2, family = 'gamma')
  actual_output2 = mixtools::gammamixEM(x, k = 2)
  
  # Assert
  expect_equal(actual_output1$pi, sort(actual_output2$lambda), tolerance = 1e-2)
  expect_equal(actual_output1$loglik, actual_output2$loglik, tolerance = 1e-4)
})
GaryBAYLOR/mixR documentation built on Oct. 14, 2024, 11:34 p.m.