tests/testthat/test-cluslongRep.R

context('latrendRep')
rngReset()

m = lcMethodLMKM(formula = Value ~ Assessment)
test_that('default', {
  models = latrendRep(lcMethodLMKM(formula = Value ~ Assessment), data = testLongData, .rep = 2)

  expect_is(models, 'lcModels')
  expect_length(models, 2)

  expect_equal(deparse(getCall(models[[1]])$data), 'testLongData')
  expect_equal(deparse(getCall(models[[2]])$data), 'testLongData')
})

test_that('method var', {
  models = latrendRep(m, data = testLongData, .rep = 2)

  expect_is(models, 'lcModels')
  expect_length(models, 2)
})

test_that('method name', {
  refMethod = mTest
  model = latrendRep('lcMethodLMKM', formula = Value ~ Assessment, data = testLongData, .rep = 1)[[1]]
  newMethod = getLcMethod(model)
  expect_equal(newMethod$nClusters, refMethod$nClusters)
})

test_that('single rep', {
  models = latrendRep(m, data = testLongData, .rep = 1)

  expect_is(models, 'lcModels')
  expect_length(models, 1)
})

test_that('matrix input', {
  mat = tsmatrix(testLongData, response = 'Value')
  models = latrendRep(m, data = mat, .rep = 2)

  expect_is(models, 'lcModels')
  expect_length(models, 2)
})

test_that('envir', {
  method = lcMethodLMKM(nClusters = a, formula = Value ~ Assessment)
  env = list2env(list(a = 1))
  models = latrendRep(method, data = testLongData, envir = env, .rep = 2)

  expect_is(models, 'lcModels')
  expect_length(models, 2)
  expect_equal(nClusters(models[[1]]), 1)
})

test_that('repeated probabilistic method calls yield different results', {
  method = lcMethodTestRandom(alpha = 1, nClusters = 3)
  models = latrendRep(method, data = testLongData, .rep = 2)

  expect_true(!isTRUE(all.equal(trajectoryAssignments(models[[1]]), trajectoryAssignments(models[[2]]))))
})

test_that('setting .seed', {
  method = lcMethodTestRandom(alpha = 1, nClusters = 3)
  models1 = latrendRep(method, data = testLongData, .rep = 2, .seed = 1)
  models2 = latrendRep(method, data = testLongData, .rep = 2, .seed = 2)

  expect_true(!isTRUE(all.equal(trajectoryAssignments(models1[[1]]), trajectoryAssignments(models1[[2]]))))
  expect_true(!isTRUE(all.equal(trajectoryAssignments(models2[[1]]), trajectoryAssignments(models2[[2]]))))

  expect_true(!isTRUE(all.equal(trajectoryAssignments(models1[[1]]), trajectoryAssignments(models2[[1]]))))
  expect_true(!isTRUE(all.equal(trajectoryAssignments(models1[[2]]), trajectoryAssignments(models2[[2]]))))
})

test_that('method seed is ignored', {
  method = lcMethodTestRandom(alpha = 1, nClusters = 3, seed = 1)
  expect_warning({
    models = latrendRep(method, data = testLongData)
  })

  expect_true(!isTRUE(all.equal(trajectoryAssignments(models[[1]]), trajectoryAssignments(models[[2]]))))

  expect_warning({
    models2 = latrendRep(method, data = testLongData, seed = 2)
  })
  expect_true(!isTRUE(all.equal(trajectoryAssignments(models[[1]]), trajectoryAssignments(models2[[1]]))))
  expect_true(!isTRUE(all.equal(trajectoryAssignments(models2[[1]]), trajectoryAssignments(models2[[2]]))))
})

Try the latrend package in your browser

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

latrend documentation built on March 31, 2023, 5:45 p.m.