test_that("automatic first-chain setup follows unknown-k simulations", { time <- c(0.25, 0.5, 1, 2, 4) ww <- ambs:::.make_chain_inits("ww", time, NULL)[[1]] gw <- ambs:::.make_chain_inits("gw", time, NULL)[[1]] for (init in list(ww, gw)) { expect_equal(init$alpha, 0) expect_equal(init$p, 0.5) expect_equal(init$k1, 2) expect_equal(init$k2, 2) expect_equal(init$th1, 1) expect_equal(init$th2, 0.5) } }) test_that("LL first-chain setup mirrors WW and GW component locations", { init <- ambs:::.make_chain_inits( "ll", c(0.25, 0.5, 1, 2, 4), NULL )[[1]] expect_equal(init$alpha, 0) expect_equal(init$p, 0.5) expect_equal(init$mu1, 0) expect_equal(init$mu2, -log(2)) expect_equal(init$sig1, 1) expect_equal(init$sig2, 1) }) test_that("LL proposal scales adapt during warmup", { set.seed(731) fit <- suppressWarnings(alpmixsurv( c(0.3, 0.5, 0.9, 1.4, 2.1, 3), c(1, 1, 1, 0, 1, 0), model = "ll", mcmc = list(nburn = 100, nsamp = 30), ident = "none" )) expect_true(all(is.finite(fit$proposal_scales[[1]]))) expect_true(all(fit$proposal_scales[[1]] > 0)) expect_true(all(fit$posterior[, "sig1"] > 0)) expect_true(all(fit$posterior[, "sig2"] > 0)) }) test_that("simulation proposal scales adapt only during warmup", { set.seed(730) fit <- suppressWarnings(alpmixsurv( c(0.3, 0.5, 0.9, 1.4, 2.1, 3), c(1, 1, 1, 0, 1, 0), model = "gw", mcmc = list(nburn = 100, nsamp = 30, thin = 2), ident = "none" )) expect_equal(nrow(fit$posterior), 30) expect_equal(fit$mcmc$n_iter, 160) expect_true(all(is.finite(fit$proposal_scales[[1]]))) expect_true(all(fit$proposal_scales[[1]] >= 1e-4 & fit$proposal_scales[[1]] <= 5)) expect_true(all(is.finite(fit$acceptance_warmup))) expect_true(all(fit$acceptance >= 0 & fit$acceptance <= 1)) })