aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Ranke <jranke@uni-bremen.de>2022-12-19 06:37:32 +0100
committerJohannes Ranke <jranke@uni-bremen.de>2022-12-19 06:37:32 +0100
commit0023df3c31fac29b5f9337ecd732a5dfd4d51a2d (patch)
tree752d3699b139a4fa35798ead2c5925b13753cd0b
parenta54bd290bc3884d0000c52c1b29bc557825d9eae (diff)
Template and spreadsheet for hierarchical kinetics
The template only shows parent data evaluation without covariate models for now. The spreadsheet will also be useful for unit testing of the read_spreadsheet function.
-rw-r--r--.Rbuildignore3
-rw-r--r--.gitignore3
-rw-r--r--GNUmakefile4
-rw-r--r--inst/rmarkdown/templates/hier/skeleton/skeleton.Rmd186
-rw-r--r--inst/rmarkdown/templates/hier/template.yaml3
-rw-r--r--inst/testdata/lambda-cyhalothrin_soil_efsa_2014.xlsxbin0 -> 36231 bytes
6 files changed, 198 insertions, 1 deletions
diff --git a/.Rbuildignore b/.Rbuildignore
index 24632401..0dcec29a 100644
--- a/.Rbuildignore
+++ b/.Rbuildignore
@@ -9,6 +9,9 @@
^test.R$
^mkin_.*\.tar\.gz
^mkin.tar$
+^inst/rmarkdown/templates/hier/skeleton/skeleton.pdf$
+^inst/rmarkdown/templates/hier/skeleton/skeleton_cache
+^inst/rmarkdown/templates/hier/skeleton/skeleton_files
^vignettes/.build.timestamp$
^vignettes/.*_cache$
^vignettes/.*cache$
diff --git a/.gitignore b/.gitignore
index 75005f00..4f479259 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,8 @@
docs/articles/*_cache/
install.log
+inst/rmarkdown/templates/hier/skeleton/skeleton_cache
+inst/rmarkdown/templates/hier/skeleton/skeleton_files
+inst/rmarkdown/templates/hier/skeleton/skeleton.pdf
mkin*.tar.gz
mkin.tar
mkin.Rcheck
diff --git a/GNUmakefile b/GNUmakefile
index e5f83c1f..4680514c 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -24,7 +24,9 @@ pkgfiles = \
DESCRIPTION \
inst/WORDLIST \
inst/dataset_generation/* \
- inst/testdata/fit_old_FOCUS_D.rda \
+ inst/rmarkdown/templates/hier/template.yaml \
+ inst/rmarkdown/templates/hier/skeleton/skeleton.Rmd \
+ inst/testdata/* \
man/* \
NAMESPACE \
NEWS.md \
diff --git a/inst/rmarkdown/templates/hier/skeleton/skeleton.Rmd b/inst/rmarkdown/templates/hier/skeleton/skeleton.Rmd
new file mode 100644
index 00000000..df6fa2f9
--- /dev/null
+++ b/inst/rmarkdown/templates/hier/skeleton/skeleton.Rmd
@@ -0,0 +1,186 @@
+---
+title: "Hierarchical kinetic modelling of degradation data"
+author:
+date: Last change on DD MMM YYYY, last compiled on `r format(Sys.time(),
+ "%e %B %Y")`
+output:
+ pdf_document:
+ extra_dependencies: ["float", "listing"]
+toc: yes
+geometry: margin=2cm
+---
+
+
+```{r setup, echo = FALSE, cache = FALSE}
+errmods <- c(const = "constant variance", tc = "two-component error")
+
+knitr::opts_chunk$set(
+ comment = "", tidy = FALSE, cache = TRUE, fig.pos = "H", fig.align = "center"
+)
+options(knitr.kable.NA = "")
+
+# Version requirements
+if (getRversion() < "4.1.0")
+ stop("You need R with version > 4.1.0 to compile this document")
+if ((saemix_version <- packageVersion("saemix")) < "3.1") {
+ warning("Your saemix version is ", saemix_version,
+ ", you should preferably use 3.2 to compile this document")
+}
+if ((mkin_version <- packageVersion("mkin")) < "1.2.2") {
+ stop("Your mkin version is ", mkin_version,
+ ", you need at least 1.2.2 to compile this document")
+}
+```
+
+```{r packages, cache = FALSE, message = FALSE, warning = FALSE, echo = FALSE}
+library(mkin)
+library(saemix)
+library(parallel)
+library(knitr)
+```
+
+```{r n_cores, cache = FALSE, echo = FALSE}
+n_cores <- detectCores()
+
+if (Sys.info()["sysname"] == "Windows") {
+ cl <- makePSOCKcluster(n_cores)
+} else {
+ cl <- makeForkCluster(n_cores)
+}
+```
+
+\clearpage
+
+# Introduction
+
+This report shows hierarchical kinetic modelling for ...
+The data were obtained from ...
+
+```{r ds}
+data_path <- system.file("testdata", "lambda-cyhalothrin_soil_efsa_2014.xlsx", package = "mkin")
+ds <- read_spreadsheet(data_path, valid_datasets = c(1:4, 7:13))
+covariates <- attr(ds, "covariates")
+```
+
+The covariate data are shown below.
+
+```{r results = "asis", dependson = "ds", echo = FALSE}
+kable(covariates, caption = "Covariate data for all datasets")
+```
+
+\clearpage
+
+The datasets with the residue time series are shown in the tables below. Please
+refer to the spreadsheet for details like data sources, treatment of values
+below reporting limits and time step normalisation factors.
+
+```{r results = "asis", dependson = "ds", echo = FALSE}
+for (ds_name in names(ds)) {
+ print(
+ kable(mkin_long_to_wide(ds[[ds_name]]),
+ caption = paste("Dataset", ds_name),
+ booktabs = TRUE, row.names = FALSE))
+ cat("\n\\clearpage\n")
+}
+```
+
+# Parent only evaluations
+
+The following code performs separate fits of the candidate degradation models
+to all datasets using constant variance and the two-component error model.
+
+```{r parent-sep, dependson = "ds"}
+parent_deg_mods <- c("SFO", "FOMC", "DFOP", "SFORB")
+parent_sep_const <- mmkin(
+ parent_deg_mods, ds,
+ error_model = "const",
+ cluster = cl, quiet = TRUE)
+parent_sep_tc <- update(parent_sep_const, error_model = "tc")
+```
+
+To select the parent model, the corresponding hierarchical fits are performed below.
+
+```{r parent-mhmkin, dependson = "parent-sep"}
+parent_mhmkin <- mhmkin(list(parent_sep_const, parent_sep_tc), cluster = cl)
+status(parent_mhmkin) |> kable()
+```
+
+All fits terminate without errors (status OK). The check for ill-defined
+parameters shows that not all random effect parameters can be robustly
+quantified.
+
+```{r dependson = "parent_mhmkin"}
+illparms(parent_mhmkin) |> kable()
+```
+
+Therefore, the fits are updated, excluding random effects that were
+ill-defined according to the `illparms` function.
+
+```{r parent-mhmkin-refined}
+parent_mhmkin_refined <- update(parent_mhmkin,
+ no_random_effect = illparms(parent_mhmkin))
+status(parent_mhmkin_refined) |> kable()
+```
+
+The most suitable model is selected based on the AIC.
+
+```{r dependson = "parent-mhmkin"}
+aic_parent <- AIC(parent_mhmkin_refined)
+min_aic <- which(aic_parent == min(aic_parent), arr.ind = TRUE)
+best_degmod_parent <- rownames(aic_parent)[min_aic[1]]
+best_errmod_parent <- colnames(aic_parent)[min_aic[2]]
+anova(parent_mhmkin_refined) |> kable(digits = 1)
+```
+
+Based on the AIC, the combination of the `r best_degmod_parent` degradation
+model with the error model `r errmods[best_errmod_parent]` is identified to
+be most suitable for the degradation of the parent. The check below
+confirms that no ill-defined parameters remain for this combined model.
+
+```{r dependson = "parent-mhmkin"}
+illparms(parent_mhmkin_refined[[best_degmod_parent, best_errmod_parent]])
+```
+
+The corresponding fit is shown below.
+
+```{r parent-best-full, dependson = "parent-mhmkin"}
+plot(parent_mhmkin_refined[[best_degmod_parent, best_errmod_parent]])
+```
+
+Detailed listings of the parent fits are shown in the Appendix.
+
+\clearpage
+
+# Appendix
+
+## Summaries of saem fits
+
+### Parent fits
+
+```{r listings-parent, results = "asis", echo = FALSE}
+for (deg_mod in parent_deg_mods) {
+ for (err_mod in c("const", "tc")) {
+ caption <- paste("Hierarchical", deg_mod, "fit with", errmods[err_mod])
+ tex_listing(parent_mhmkin[[deg_mod, err_mod]], caption)
+ }
+}
+```
+
+### Refined parent fits
+
+```{r listings-pathway, results = "asis", echo = FALSE}
+for (deg_mod in parent_deg_mods) {
+ for (err_mod in c("const", "tc")) {
+ caption <- paste("Refined hierarchical", deg_mod, "fit with", errmods[err_mod])
+ tex_listing(parent_mhmkin_refined[[deg_mod, err_mod]], caption)
+ }
+}
+```
+
+## Session info
+
+```{r, echo = FALSE}
+parallel::stopCluster(cl)
+sessionInfo()
+```
+
diff --git a/inst/rmarkdown/templates/hier/template.yaml b/inst/rmarkdown/templates/hier/template.yaml
new file mode 100644
index 00000000..d8ab6a4d
--- /dev/null
+++ b/inst/rmarkdown/templates/hier/template.yaml
@@ -0,0 +1,3 @@
+name: Hierarchical kinetics
+description: Hierarchical kinetic modelling of degradation data
+create_dir: true
diff --git a/inst/testdata/lambda-cyhalothrin_soil_efsa_2014.xlsx b/inst/testdata/lambda-cyhalothrin_soil_efsa_2014.xlsx
new file mode 100644
index 00000000..32fc049f
--- /dev/null
+++ b/inst/testdata/lambda-cyhalothrin_soil_efsa_2014.xlsx
Binary files differ

Contact - Imprint