diff options
Diffstat (limited to 'tests/testthat')
-rw-r--r-- | tests/testthat/test_nlme.R | 59 | ||||
-rw-r--r-- | tests/testthat/test_plots_summary_twa.R | 1 |
2 files changed, 59 insertions, 1 deletions
diff --git a/tests/testthat/test_nlme.R b/tests/testthat/test_nlme.R index 31db92e1..0d1fcd6d 100644 --- a/tests/testthat/test_nlme.R +++ b/tests/testthat/test_nlme.R @@ -64,3 +64,62 @@ test_that("nlme_function works correctly", { expect_silent(tmp <- update(m_nlme_mkin)) }) + +test_that("nlme_function works correctly in other cases", { + + dt50_in <- c(400, 800, 1200, 1600, 2000) + dt50_in_geomean <- geomean(dt50_in) + k_in <- log(2) / dt50_in + SFO <- mkinmod(parent = mkinsub("SFO")) + pred_sfo <- function(k) { + mkinpredict(SFO, + c(k_parent_sink = k), + c(parent = 100), + sampling_times) + } + ds_me_sfo <- mapply(pred_sfo, k_in, SIMPLIFY = FALSE) + add_err_5 <- function(i) { + add_err(ds_me_sfo[[i]], sdfunc = function(value) 5, n = 3, seed = i + 1) + } + ds_me_sfo_5 <- sapply(1:5, add_err_5) + names(ds_me_sfo_5) <- paste("Dataset", 1:15) + dimnames(ds_me_sfo_5) <- list(Subset = 1:3, DT50 = dt50_in) + + f_me_sfo_5 <- mmkin("SFO", ds_me_sfo_5) + + ds_me_sfo_5_grouped_mkin <- nlme_data(f_me_sfo_5) + ds_me_sfo_5_mean_dp <- mean_degparms(f_me_sfo_5) + me_sfo_function <- nlme_function(f_me_sfo_5) + + f_nlme_sfo_5_all_mkin <- nlme(value ~ me_sfo_function(name, time, + parent_0, log_k_parent_sink), + data = ds_me_sfo_5_grouped, + fixed = parent_0 + log_k_parent_sink ~ 1, + random = pdDiag(parent_0 + log_k_parent_sink ~ 1), + start = ds_me_sfo_5_mean_dp) + + f_nlme_sfo_5 <- nlme(value ~ SSasymp(time, 0, parent_0, log_k_parent_sink), + data = ds_me_sfo_5_grouped_mkin, + fixed = parent_0 + log_k_parent_sink ~ 1, + random = pdDiag(parent_0 + log_k_parent_sink ~ 1), + start = ds_me_sfo_5_mean_dp) + + expect_equal(f_nlme_sfo_5_all_mkin$coefficients, f_nlme_sfo_5$coefficients) + + # With less ideal starting values we get fits with lower AIC (not shown) + f_nlme_sfo_5_all_mkin_nostart <- nlme(value ~ me_sfo_function(name, time, + parent_0, log_k_parent_sink), + data = ds_me_sfo_5_grouped, + fixed = parent_0 + log_k_parent_sink ~ 1, + random = pdDiag(parent_0 + log_k_parent_sink ~ 1), + start = c(parent_0 = 100, log_k_parent_sink = log(0.1))) + + f_nlme_sfo_5_nostart <- nlme(value ~ SSasymp(time, 0, parent_0, log_k_parent_sink), + data = ds_me_sfo_5_grouped_mkin, + fixed = parent_0 + log_k_parent_sink ~ 1, + random = pdDiag(parent_0 + log_k_parent_sink ~ 1), + start = c(parent_0 = 100, log_k_parent_sink = log(0.1))) + + expect_equal(f_nlme_sfo_5_all_mkin_nostart$coefficients, f_nlme_sfo_5_nostart$coefficients) + +}) diff --git a/tests/testthat/test_plots_summary_twa.R b/tests/testthat/test_plots_summary_twa.R index 5917dd6e..77144665 100644 --- a/tests/testthat/test_plots_summary_twa.R +++ b/tests/testthat/test_plots_summary_twa.R @@ -111,7 +111,6 @@ test_that("Plotting mkinfit and mmkin objects is reproducible", { vdiffr::expect_doppelganger("mkinerrplot for FOCUS C SFO", mkinerrplot_FOCUS_C_SFO) vdiffr::expect_doppelganger("mmkin plot for FOCUS C", mmkin_FOCUS_C) vdiffr::expect_doppelganger("mmkin plot for SFO (FOCUS C and D)", mmkin_SFO) - skip_on_travis() # No idea why the following are different on Travis vdiffr::expect_doppelganger("plot_res for FOCUS D", plot_res_sfo_sfo) vdiffr::expect_doppelganger("plot_err for FOCUS D", plot_err_sfo_sfo) vdiffr::expect_doppelganger("plot_errmod with SFO_lin_a_tc", plot_errmod_fit_tc_1) |