diff options
| author | Johannes Ranke <jranke@uni-bremen.de> | 2019-11-13 21:15:35 +0100 | 
|---|---|---|
| committer | Johannes Ranke <jranke@uni-bremen.de> | 2019-11-13 21:15:35 +0100 | 
| commit | c3700bec3a704660d3ade7a54c56b7084beb02b4 (patch) | |
| tree | 35fe23b6c9e2b3fd5c0bd66e9a4f8b24281302de | |
| parent | b0e529ff49dfa52568fe7c5e6e76439a83c62840 (diff) | |
Calculate Akaike weights
| -rw-r--r-- | NAMESPACE | 3 | ||||
| -rw-r--r-- | NEWS.md | 2 | ||||
| -rw-r--r-- | R/aw.R | 60 | ||||
| -rw-r--r-- | _pkgdown.yml | 1 | ||||
| -rw-r--r-- | docs/news/index.html | 1 | ||||
| -rw-r--r-- | docs/reference/aw.html | 214 | ||||
| -rw-r--r-- | docs/reference/index.html | 6 | ||||
| -rw-r--r-- | docs/sitemap.xml | 3 | ||||
| -rw-r--r-- | man/aw.Rd | 47 | ||||
| -rw-r--r-- | test.log | 21 | ||||
| -rw-r--r-- | tests/testthat/FOCUS_2006_D.csf | 2 | ||||
| -rw-r--r-- | tests/testthat/test_aw.R | 12 | 
12 files changed, 361 insertions, 11 deletions
| @@ -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) @@ -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' @@ -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 @@  <a href="#mkin-0-9-49-8-unreleased" class="anchor"></a>mkin 0.9.49.8 (unreleased)<small> Unreleased </small>  </h1>  <ul> +<li><p>‘aw’: Generic function for calculating Akaike weights, methods for mkinfit objects and mmkin columns</p></li>  <li><p>‘loftest’: Add a lack-of-fit test</p></li>  <li><p>‘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’</p></li>  <li><p>‘lrtest.mkinfit’: Improve naming of the compared fits in the case of fixed parameters</p></li> diff --git a/docs/reference/aw.html b/docs/reference/aw.html new file mode 100644 index 00000000..b6f3ce48 --- /dev/null +++ b/docs/reference/aw.html @@ -0,0 +1,214 @@ +<!-- Generated by pkgdown: do not edit by hand --> +<!DOCTYPE html> +<html lang="en"> +  <head> +  <meta charset="utf-8"> +<meta http-equiv="X-UA-Compatible" content="IE=edge"> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<title>Calculate Akaike weights for model averaging — aw • mkin</title> + + +<!-- jquery --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<!-- Bootstrap --> + +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> + +<!-- Font Awesome icons --> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/all.min.css" integrity="sha256-nAmazAk6vS34Xqo0BSrTb+abbtFlgsFK7NKSi6o7Y78=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.7.1/css/v4-shims.min.css" integrity="sha256-6qHlizsOWFskGlwVOKuns+D1nB6ssZrHQrNj1wGplHc=" crossorigin="anonymous" /> + +<!-- clipboard.js --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> + +<!-- headroom.js --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> + +<!-- pkgdown --> +<link href="../pkgdown.css" rel="stylesheet"> +<script src="../pkgdown.js"></script> + + + + +<meta property="og:title" content="Calculate Akaike weights for model averaging — aw" /> +<meta property="og:description" content="Akaike weights are calculated based on the relative +expected Kullback-Leibler information as specified +by Burnham and Anderson (2004)." /> +<meta name="twitter:card" content="summary" /> + + + + +<!-- mathjax --> +<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> + +<!--[if lt IE 9]> +<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> +<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> +<![endif]--> + + + +  </head> + +  <body> +    <div class="container template-reference-topic"> +      <header> +      <div class="navbar navbar-default navbar-fixed-top" role="navigation"> +  <div class="container"> +    <div class="navbar-header"> +      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false"> +        <span class="sr-only">Toggle navigation</span> +        <span class="icon-bar"></span> +        <span class="icon-bar"></span> +        <span class="icon-bar"></span> +      </button> +      <span class="navbar-brand"> +        <a class="navbar-link" href="../index.html">mkin</a> +        <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.9.49.8</span> +      </span> +    </div> + +    <div id="navbar" class="navbar-collapse collapse"> +      <ul class="nav navbar-nav"> +        <li> +  <a href="../reference/index.html">Functions and data</a> +</li> +<li class="dropdown"> +  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"> +    Articles +      +    <span class="caret"></span> +  </a> +  <ul class="dropdown-menu" role="menu"> +    <li> +      <a href="../articles/mkin.html">Introduction to mkin</a> +    </li> +    <li> +      <a href="../articles/FOCUS_D.html">Example evaluation of FOCUS Example Dataset D</a> +    </li> +    <li> +      <a href="../articles/FOCUS_L.html">Example evaluation of FOCUS Laboratory Data L1 to L3</a> +    </li> +    <li> +      <a href="../articles/web_only/FOCUS_Z.html">Example evaluation of FOCUS Example Dataset Z</a> +    </li> +    <li> +      <a href="../articles/web_only/compiled_models.html">Performance benefit by using compiled model definitions in mkin</a> +    </li> +    <li> +      <a href="../articles/twa.html">Calculation of time weighted average concentrations with mkin</a> +    </li> +    <li> +      <a href="../articles/web_only/NAFTA_examples.html">Example evaluation of NAFTA SOP Attachment examples</a> +    </li> +  </ul> +</li> +<li> +  <a href="../news/index.html">News</a> +</li> +      </ul> +      <ul class="nav navbar-nav navbar-right"> +         +      </ul> +       +    </div><!--/.nav-collapse --> +  </div><!--/.container --> +</div><!--/.navbar --> + +       + +      </header> + +<div class="row"> +  <div class="col-md-9 contents"> +    <div class="page-header"> +    <h1>Calculate Akaike weights for model averaging</h1> +     +    <div class="hidden name"><code>aw.Rd</code></div> +    </div> + +    <div class="ref-description"> +    <p>Akaike weights are calculated based on the relative +expected Kullback-Leibler information as specified +by Burnham and Anderson (2004).</p> +    </div> + +    <pre class="usage"><span class='fu'>aw</span>(<span class='no'>object</span>, <span class='no'>...</span>) + +<span class='co'># S3 method for mkinfit</span> +<span class='fu'>aw</span>(<span class='no'>object</span>, <span class='no'>...</span>) + +<span class='co'># S3 method for mmkin</span> +<span class='fu'>aw</span>(<span class='no'>object</span>, <span class='no'>...</span>)</pre> + +    <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> +    <table class="ref-arguments"> +    <colgroup><col class="name" /><col class="desc" /></colgroup> +    <tr> +      <th>object</th> +      <td><p>An mmkin column object, containing two or more +<code><a href='mkinfit.html'>mkinfit</a></code> 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.</p></td> +    </tr> +    <tr> +      <th>...</th> +      <td><p>Not used in the method for mmkin column objects, +further mkinfit objects in the method for mkinfit objects.</p></td> +    </tr> +    </table> + +    <h2 class="hasAnchor" id="references"><a class="anchor" href="#references"></a>References</h2> + +    <p>Burnham KP and Anderson DR (2004) Multimodel +  Inference: Understanding AIC and BIC in Model Selection +  Sociological Methods & Research 33(2) 261-304</p> + +    <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> +    <pre class="examples"><div class='input'><span class='co'># \dontrun{</span> +<span class='no'>f_sfo</span> <span class='kw'><-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='st'>"SFO"</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>) +<span class='no'>f_dfop</span> <span class='kw'><-</span> <span class='fu'><a href='mkinfit.html'>mkinfit</a></span>(<span class='st'>"DFOP"</span>, <span class='no'>FOCUS_2006_D</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>) +<span class='no'>aw_sfo_dfop</span> <span class='kw'><-</span> <span class='fu'>aw</span>(<span class='no'>f_sfo</span>, <span class='no'>f_dfop</span>) +<span class='fu'><a href='https://rdrr.io/r/base/sum.html'>sum</a></span>(<span class='no'>aw_sfo_dfop</span>)</div><div class='output co'>#> [1] 1</div><div class='input'><span class='no'>aw_sfo_dfop</span> <span class='co'># SFO gets more weight as it has less parameters and a similar fit</span></div><div class='output co'>#> [1] 0.5970258 0.4029742</div><div class='input'><span class='no'>f</span> <span class='kw'><-</span> <span class='fu'><a href='mmkin.html'>mmkin</a></span>(<span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"FOMC"</span>, <span class='st'>"DFOP"</span>), <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='st'>"FOCUS D"</span> <span class='kw'>=</span> <span class='no'>FOCUS_2006_D</span>), <span class='kw'>cores</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>quiet</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>) +<span class='fu'>aw</span>(<span class='no'>f</span>)</div><div class='output co'>#> [1] 0.4808722 0.1945539 0.3245740</div><div class='input'><span class='fu'><a href='https://rdrr.io/r/base/sum.html'>sum</a></span>(<span class='fu'>aw</span>(<span class='no'>f</span>))</div><div class='output co'>#> [1] 1</div><div class='input'><span class='fu'>aw</span>(<span class='no'>f</span>[<span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"SFO"</span>, <span class='st'>"DFOP"</span>)])</div><div class='output co'>#> [1] 0.5970258 0.4029742</div><div class='input'># } +</div></pre> +  </div> +  <div class="col-md-3 hidden-xs hidden-sm" id="sidebar"> +    <h2>Contents</h2> +    <ul class="nav nav-pills nav-stacked"> +      <li><a href="#arguments">Arguments</a></li> +      <li><a href="#references">References</a></li> +      <li><a href="#examples">Examples</a></li> +    </ul> + +  </div> +</div> + + +      <footer> +      <div class="copyright"> +  <p>Developed by Johannes Ranke.</p> +</div> + +<div class="pkgdown"> +  <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.</p> +</div> + +      </footer> +   </div> + +   + + +  </body> +</html> + + diff --git a/docs/reference/index.html b/docs/reference/index.html index 4398469b..3d417267 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -234,6 +234,12 @@ with mkinfit</p></td>        </tr><tr>          <td> +          <p><code><a href="aw.html">aw()</a></code> </p> +        </td> +        <td><p>Calculate Akaike weights for model averaging</p></td> +      </tr><tr> +         +        <td>            <p><code><a href="CAKE_export.html">CAKE_export()</a></code> </p>          </td>          <td><p>Export a list of datasets format to a CAKE study file</p></td> diff --git a/docs/sitemap.xml b/docs/sitemap.xml index 66b776b2..a8d6dfa4 100644 --- a/docs/sitemap.xml +++ b/docs/sitemap.xml @@ -55,6 +55,9 @@      <loc>https://pkgdown.jrwb.de/mkin/reference/add_err.html</loc>    </url>    <url> +    <loc>https://pkgdown.jrwb.de/mkin/reference/aw.html</loc> +  </url> +  <url>      <loc>https://pkgdown.jrwb.de/mkin/reference/confint.mkinfit.html</loc>    </url>    <url> 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 +} @@ -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") +}) | 
