From 20b9c584e7c43ecbb708459e531c24a1a4751e17 Mon Sep 17 00:00:00 2001
From: Johannes Ranke
Date: Sat, 9 Nov 2019 01:05:51 +0100
Subject: Add a lack-of-fit test
- Switch an example dataset in the test setup to a dataset with
replicates, adapt tests
- Skip the test for lrtest with an update specification as it does not
only fail when pkgdown generates static help pages, but also in testthat
---
docs/news/index.html | 1 +
1 file changed, 1 insertion(+)
(limited to 'docs/news/index.html')
diff --git a/docs/news/index.html b/docs/news/index.html
index 48ba25e5..9aa2e18b 100644
--- a/docs/news/index.html
+++ b/docs/news/index.html
@@ -134,6 +134,7 @@
mkin 0.9.49.8 (unreleased) Unreleased
+
‘loftest’: Add a lack-of-fit test
‘plot_res’, ‘plot_sep’ and ‘mkinerrplot’: Add the possibility to show standardized residuals and make it the default for fits with error models other than ‘const’
‘lrtest.mkinfit’: Improve naming of the compared fits in the case of fixed parameters
‘confint.mkinfit’: Make the quadratic approximation the default, as the likelihood profiling takes a lot of time, especially if the fit has more than three parameters
--
cgit v1.2.3
From c3700bec3a704660d3ade7a54c56b7084beb02b4 Mon Sep 17 00:00:00 2001
From: Johannes Ranke
Date: Wed, 13 Nov 2019 21:15:35 +0100
Subject: Calculate Akaike weights
---
NAMESPACE | 3 +
NEWS.md | 2 +
R/aw.R | 60 +++++++++++
_pkgdown.yml | 1 +
docs/news/index.html | 1 +
docs/reference/aw.html | 214 ++++++++++++++++++++++++++++++++++++++++
docs/reference/index.html | 6 ++
docs/sitemap.xml | 3 +
man/aw.Rd | 47 +++++++++
test.log | 21 ++--
tests/testthat/FOCUS_2006_D.csf | 2 +-
tests/testthat/test_aw.R | 12 +++
12 files changed, 361 insertions(+), 11 deletions(-)
create mode 100644 R/aw.R
create mode 100644 docs/reference/aw.html
create mode 100644 man/aw.Rd
create mode 100644 tests/testthat/test_aw.R
(limited to 'docs/news/index.html')
diff --git a/NAMESPACE b/NAMESPACE
index e561621b..26995055 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -3,6 +3,8 @@
S3method("[",mmkin)
S3method(AIC,mmkin)
S3method(BIC,mmkin)
+S3method(aw,mkinfit)
+S3method(aw,mmkin)
S3method(confint,mkinfit)
S3method(loftest,mkinfit)
S3method(logLik,mkinfit)
@@ -30,6 +32,7 @@ export(IORE.solution)
export(SFO.solution)
export(SFORB.solution)
export(add_err)
+export(aw)
export(backtransform_odeparms)
export(endpoints)
export(ilr)
diff --git a/NEWS.md b/NEWS.md
index 965105f4..28cf76ad 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,7 @@
# mkin 0.9.49.8 (unreleased)
+- 'aw': Generic function for calculating Akaike weights, methods for mkinfit objects and mmkin columns
+
- 'loftest': Add a lack-of-fit test
- 'plot_res', 'plot_sep' and 'mkinerrplot': Add the possibility to show standardized residuals and make it the default for fits with error models other than 'const'
diff --git a/R/aw.R b/R/aw.R
new file mode 100644
index 00000000..24078f38
--- /dev/null
+++ b/R/aw.R
@@ -0,0 +1,60 @@
+#' Calculate Akaike weights for model averaging
+#'
+#' Akaike weights are calculated based on the relative
+#' expected Kullback-Leibler information as specified
+#' by Burnham and Anderson (2004).
+#'
+#' @param object An mmkin column object, containing two or more
+#' \code{\link{mkinfit}} models that have been fitted to the same data,
+#' or an mkinfit object. In the latter case, further mkinfit
+#' objects fitted to the same data should be specified
+#' as dots arguments.
+#' @param \dots Not used in the method for mmkin column objects,
+#' further mkinfit objects in the method for mkinfit objects.
+#' @references Burnham KP and Anderson DR (2004) Multimodel
+#' Inference: Understanding AIC and BIC in Model Selection
+#' Sociological Methods & Research 33(2) 261-304
+#' @examples
+#' \dontrun{
+#' f_sfo <- mkinfit("SFO", FOCUS_2006_D, quiet = TRUE)
+#' f_dfop <- mkinfit("DFOP", FOCUS_2006_D, quiet = TRUE)
+#' aw_sfo_dfop <- aw(f_sfo, f_dfop)
+#' sum(aw_sfo_dfop)
+#' aw_sfo_dfop # SFO gets more weight as it has less parameters and a similar fit
+#' f <- mmkin(c("SFO", "FOMC", "DFOP"), list("FOCUS D" = FOCUS_2006_D), cores = 1, quiet = TRUE)
+#' aw(f)
+#' sum(aw(f))
+#' aw(f[c("SFO", "DFOP")])
+#' }
+#' @export
+aw <- function(object, ...) UseMethod("aw")
+
+#' @export
+#' @rdname aw
+aw.mkinfit <- function(object, ...) {
+ oo <- list(...)
+ data_object <- object$data[c("time", "variable", "observed")]
+ for (i in seq_along(oo)) {
+ if (!inherits(oo[[i]], "mkinfit")) stop("Please supply only mkinfit objects")
+ data_other_object <- oo[[i]]$data[c("time", "variable", "observed")]
+ if (!identical(data_object, data_other_object)) {
+ stop("It seems that the mkinfit objects have not all been fitted to the same data")
+ }
+ }
+ all_objects <- list(object, ...)
+ AIC_all <- sapply(all_objects, AIC)
+ delta_i <- AIC_all - min(AIC_all)
+ denom <- sum(exp(-delta_i/2))
+ w_i <- exp(-delta_i/2) / denom
+ return(w_i)
+}
+
+#' @export
+#' @rdname aw
+aw.mmkin <- function(object, ...) {
+ if (ncol(object) > 1) stop("Please supply an mmkin column object")
+ do.call(aw, object)
+}
+
+
+
diff --git a/_pkgdown.yml b/_pkgdown.yml
index c298256f..6bb05b3e 100644
--- a/_pkgdown.yml
+++ b/_pkgdown.yml
@@ -25,6 +25,7 @@ reference:
- loftest
- mkinerrmin
- endpoints
+ - aw
- CAKE_export
- title: Work with mmkin objects
desc: Functions working with aggregated results
diff --git a/docs/news/index.html b/docs/news/index.html
index 9aa2e18b..6b0b89fa 100644
--- a/docs/news/index.html
+++ b/docs/news/index.html
@@ -134,6 +134,7 @@
mkin 0.9.49.8 (unreleased) Unreleased
+
‘aw’: Generic function for calculating Akaike weights, methods for mkinfit objects and mmkin columns
‘loftest’: Add a lack-of-fit test
‘plot_res’, ‘plot_sep’ and ‘mkinerrplot’: Add the possibility to show standardized residuals and make it the default for fits with error models other than ‘const’
‘lrtest.mkinfit’: Improve naming of the compared fits in the case of fixed parameters
Akaike weights are calculated based on the relative
+expected Kullback-Leibler information as specified
+by Burnham and Anderson (2004).
+
+
+
aw(object, ...)
+
+# S3 method for mkinfit
+aw(object, ...)
+
+# S3 method for mmkin
+aw(object, ...)
+
+
Arguments
+
+
+
+
object
+
An mmkin column object, containing two or more
+mkinfit models that have been fitted to the same data,
+or an mkinfit object. In the latter case, further mkinfit
+objects fitted to the same data should be specified
+as dots arguments.
+
+
+
...
+
Not used in the method for mmkin column objects,
+further mkinfit objects in the method for mkinfit objects.
+
+
+
+
References
+
+
Burnham KP and Anderson DR (2004) Multimodel
+ Inference: Understanding AIC and BIC in Model Selection
+ Sociological Methods & Research 33(2) 261-304
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
index 66b776b2..a8d6dfa4 100644
--- a/docs/sitemap.xml
+++ b/docs/sitemap.xml
@@ -54,6 +54,9 @@
https://pkgdown.jrwb.de/mkin/reference/add_err.html
+
+ https://pkgdown.jrwb.de/mkin/reference/aw.html
+ https://pkgdown.jrwb.de/mkin/reference/confint.mkinfit.html
diff --git a/man/aw.Rd b/man/aw.Rd
new file mode 100644
index 00000000..f0994b94
--- /dev/null
+++ b/man/aw.Rd
@@ -0,0 +1,47 @@
+% Generated by roxygen2: do not edit by hand
+% Please edit documentation in R/aw.R
+\name{aw}
+\alias{aw}
+\alias{aw.mkinfit}
+\alias{aw.mmkin}
+\title{Calculate Akaike weights for model averaging}
+\usage{
+aw(object, ...)
+
+\method{aw}{mkinfit}(object, ...)
+
+\method{aw}{mmkin}(object, ...)
+}
+\arguments{
+\item{object}{An mmkin column object, containing two or more
+\code{\link{mkinfit}} models that have been fitted to the same data,
+or an mkinfit object. In the latter case, further mkinfit
+objects fitted to the same data should be specified
+as dots arguments.}
+
+\item{\dots}{Not used in the method for mmkin column objects,
+further mkinfit objects in the method for mkinfit objects.}
+}
+\description{
+Akaike weights are calculated based on the relative
+expected Kullback-Leibler information as specified
+by Burnham and Anderson (2004).
+}
+\examples{
+\dontrun{
+f_sfo <- mkinfit("SFO", FOCUS_2006_D, quiet = TRUE)
+f_dfop <- mkinfit("DFOP", FOCUS_2006_D, quiet = TRUE)
+aw_sfo_dfop <- aw(f_sfo, f_dfop)
+sum(aw_sfo_dfop)
+aw_sfo_dfop # SFO gets more weight as it has less parameters and a similar fit
+f <- mmkin(c("SFO", "FOMC", "DFOP"), list("FOCUS D" = FOCUS_2006_D), cores = 1, quiet = TRUE)
+aw(f)
+sum(aw(f))
+aw(f[c("SFO", "DFOP")])
+}
+}
+\references{
+Burnham KP and Anderson DR (2004) Multimodel
+ Inference: Understanding AIC and BIC in Model Selection
+ Sociological Methods & Research 33(2) 261-304
+}
diff --git a/test.log b/test.log
index bc6d26ae..c51d06b8 100644
--- a/test.log
+++ b/test.log
@@ -1,11 +1,12 @@
Loading mkin
Testing mkin
✔ | OK F W S | Context
+✔ | 5 | Calculation of Akaike weights
✔ | 2 | Export dataset for reading into CAKE
-✔ | 10 | Confidence intervals and p-values [10.1 s]
-✔ | 14 | Error model fitting [40.5 s]
+✔ | 10 | Confidence intervals and p-values [9.7 s]
+✔ | 14 | Error model fitting [36.9 s]
✔ | 4 | Calculation of FOCUS chi2 error levels [2.2 s]
-✔ | 13 | Results for FOCUS D established in expertise for UBA (Ranke 2014) [3.4 s]
+✔ | 13 | Results for FOCUS D established in expertise for UBA (Ranke 2014) [3.3 s]
✔ | 6 | Test fitting the decline of metabolites from their maximum [0.7 s]
✔ | 1 | Fitting the logistic model [0.9 s]
✔ | 1 | Test dataset class mkinds used in gmkin
@@ -18,20 +19,20 @@ Testing mkin
✔ | 11 | Plotting [0.6 s]
✔ | 4 | AIC calculation
✔ | 2 | Residuals extracted from mkinfit models
-✔ | 2 | Complex test case from Schaefer et al. (2007) Piacenza paper [5.6 s]
-✔ | 4 | Fitting the SFORB model [1.8 s]
+✔ | 2 | Complex test case from Schaefer et al. (2007) Piacenza paper [5.3 s]
+✔ | 4 | Fitting the SFORB model [1.7 s]
✔ | 1 | Summaries of old mkinfit objects
-✔ | 4 | Results for synthetic data established in expertise for UBA (Ranke 2014) [7.5 s]
-✔ | 7 1 | Hypothesis tests [34.1 s]
+✔ | 4 | Results for synthetic data established in expertise for UBA (Ranke 2014) [7.2 s]
+✔ | 7 1 | Hypothesis tests [32.3 s]
────────────────────────────────────────────────────────────────────────────────
-test_tests.R:59: skip: We can do a likelihood ratio test using an update specification
+test_tests.R:60: skip: We can do a likelihood ratio test using an update specification
Reason: This errors out if called by testthat while it works in a normal R session
────────────────────────────────────────────────────────────────────────────────
══ Results ═════════════════════════════════════════════════════════════════════
-Duration: 116.9 s
+Duration: 110.2 s
-OK: 133
+OK: 138
Failed: 0
Warnings: 0
Skipped: 1
diff --git a/tests/testthat/FOCUS_2006_D.csf b/tests/testthat/FOCUS_2006_D.csf
index 09940aa3..358b50e3 100644
--- a/tests/testthat/FOCUS_2006_D.csf
+++ b/tests/testthat/FOCUS_2006_D.csf
@@ -5,7 +5,7 @@ Description:
MeasurementUnits: % AR
TimeUnits: days
Comments: Created using mkin::CAKE_export
-Date: 2019-11-09
+Date: 2019-11-13
Optimiser: IRLS
[Data]
diff --git a/tests/testthat/test_aw.R b/tests/testthat/test_aw.R
new file mode 100644
index 00000000..0a493893
--- /dev/null
+++ b/tests/testthat/test_aw.R
@@ -0,0 +1,12 @@
+context("Calculation of Akaike weights")
+
+test_that("Akaike weights sum to one", {
+ skip_on_cran()
+ aw_1 <- aw(fit_nw_1, fit_obs_1, fit_tc_1)
+ expect_error(aw(fit_nw_1, f_2_mkin), "same data")
+ expect_error(aw(fit_nw_1, 3), "mkinfit objects")
+ expect_equal(sum(aw_1), 1)
+ aw_2 <- aw(fits[c("SFO", "DFOP"), "FOCUS_D"])
+ expect_equal(sum(aw_2), 1)
+ expect_error(aw(fits), "mmkin column object")
+})
--
cgit v1.2.3
From bc42b66fab81afaf4fd90aeb24cdf2b0c2d44202 Mon Sep 17 00:00:00 2001
From: Johannes Ranke
Date: Wed, 8 Jan 2020 15:06:49 +0100
Subject: Typos in NEWS, update static docs
---
NEWS.md | 2 +-
docs/news/index.html | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
(limited to 'docs/news/index.html')
diff --git a/NEWS.md b/NEWS.md
index 28cf76ad..622a82b0 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -14,7 +14,7 @@
- Fix a bug introduced in 0.9.49.6 that occurred if the direct optimisation yielded a higher likelihood than the three-step optimisation in the d_3 algorithm, which caused the fitted parameters of the three-step optimisation to be returned instead of the parameters of the direct optimisation
-- Add an 'nobs' method for mkinfit methods, enabling the default 'BIC' method from the stats package. Also, add a 'BIC' method for mmkin column objects.
+- Add a 'nobs' method for mkinfit objects, enabling the default 'BIC' method from the stats package. Also, add a 'BIC' method for mmkin column objects.
# mkin 0.9.49.6 (2019-10-31)
diff --git a/docs/news/index.html b/docs/news/index.html
index 6b0b89fa..00257521 100644
--- a/docs/news/index.html
+++ b/docs/news/index.html
@@ -147,7 +147,7 @@
Fix a bug introduced in 0.9.49.6 that occurred if the direct optimisation yielded a higher likelihood than the three-step optimisation in the d_3 algorithm, which caused the fitted parameters of the three-step optimisation to be returned instead of the parameters of the direct optimisation
-
Add an ‘nobs’ method for mkinfit methods, enabling the default ‘BIC’ method from the stats package. Also, add a ‘BIC’ method for mmkin column objects.
+
Add a ‘nobs’ method for mkinfit objects, enabling the default ‘BIC’ method from the stats package. Also, add a ‘BIC’ method for mmkin column objects.
--
cgit v1.2.3
From 70fe6d14e27fa8fb0634856ecc45a27f4f689d88 Mon Sep 17 00:00:00 2001
From: Johannes Ranke
Date: Thu, 9 Jan 2020 17:50:23 +0100
Subject: Remove unused FME package from DESCRIPTION text
---
DESCRIPTION | 13 ++++++-------
build.log | 2 +-
docs/404.html | 2 +-
docs/articles/index.html | 2 +-
docs/authors.html | 2 +-
docs/index.html | 11 +++++------
docs/news/index.html | 2 +-
docs/reference/index.html | 2 +-
docs/reference/parms.html | 2 +-
9 files changed, 18 insertions(+), 20 deletions(-)
(limited to 'docs/news/index.html')
diff --git a/DESCRIPTION b/DESCRIPTION
index f9bed994..0bc78ed2 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
Package: mkin
Type: Package
Title: Kinetic Evaluation of Chemical Degradation Data
-Version: 0.9.49.8
-Date: 2020-01-08
+Version: 0.9.49.9
+Date: 2020-01-09
Authors@R: c(person("Johannes", "Ranke", role = c("aut", "cre", "cph"),
email = "jranke@uni-bremen.de",
comment = c(ORCID = "0000-0003-4371-6538")),
@@ -12,11 +12,10 @@ Authors@R: c(person("Johannes", "Ranke", role = c("aut", "cre", "cph"),
Description: Calculation routines based on the FOCUS Kinetics Report (2006,
2014). Includes a function for conveniently defining differential equation
models, model solution based on eigenvalues if possible or using numerical
- solvers and a choice of the optimisation methods made available by the 'FME'
- package. If a C compiler (on windows: 'Rtools') is installed, differential
- equation models are solved using compiled C functions. Please note that no
- warranty is implied for correctness of results or fitness for a particular
- purpose.
+ solvers. If a C compiler (on windows: 'Rtools') is installed, differential
+ equation models are solved using automatically generated C functions. Please
+ note that no warranty is implied for correctness of results or fitness for a
+ particular purpose.
Imports: stats, graphics, methods, deSolve, R6, inline, parallel, numDeriv,
lmtest
Suggests: knitr, rbenchmark, tikzDevice, testthat, rmarkdown, covr, vdiffr,
diff --git a/build.log b/build.log
index ffd56a90..b0765ebb 100644
--- a/build.log
+++ b/build.log
@@ -6,5 +6,5 @@
* checking for LF line-endings in source and make files and shell scripts
* checking for empty or unneeded directories
* looking to see if a ‘data/datalist’ file should be added
-* building ‘mkin_0.9.49.8.tar.gz’
+* building ‘mkin_0.9.49.9.tar.gz’
diff --git a/docs/404.html b/docs/404.html
index 2a71e496..3658a137 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -67,7 +67,7 @@
mkin
- 0.9.49.8
+ 0.9.49.9
diff --git a/docs/articles/index.html b/docs/articles/index.html
index ac5f5df1..3e181a2c 100644
--- a/docs/articles/index.html
+++ b/docs/articles/index.html
@@ -67,7 +67,7 @@
mkin
- 0.9.49.8
+ 0.9.49.9
diff --git a/docs/authors.html b/docs/authors.html
index fb50f268..2bb2557a 100644
--- a/docs/authors.html
+++ b/docs/authors.html
@@ -67,7 +67,7 @@
mkin
- 0.9.49.8
+ 0.9.49.9
diff --git a/docs/index.html b/docs/index.html
index fcb9c90b..fe334eb8 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -14,11 +14,10 @@
+ solvers. If a C compiler (on windows: Rtools) is installed, differential
+ equation models are solved using automatically generated C functions. Please
+ note that no warranty is implied for correctness of results or fitness for a
+ particular purpose.">