Runs the metabolism model specified by the specs argument. Returns a
fitted model.
Arguments
- specs
a list of model specifications and parameters for a model. Although this may be specified manually (it's just a list), it is easier and safer to use
specsto generate the list, because the set of required parameters and their defaults depends on the model given in themodel_nameargument tospecs. The help file forspecslists the necessary parameters, describes them in detail, and gives default values.- data
data.frame (not a tbl_df) of input data at the temporal resolution of raw observations (unit-value). Columns must have the same names, units, and format as the default. The solar.time column must also have a timezone code ('tzone' attribute) of 'UTC'. See the 'Formatting
data' section below for a full description.- data_daily
data.frame containing inputs with a daily timestep. See the 'Formatting
data_daily' section below for a full description.- info
any information, in any format, that you would like to store within the metab_model object
Value
An object inheriting from metab_model and containing the fitted model. This object can be inspected with the functions in the
Formatting data
Unit-value model inputs passed via the data argument should
be formatted as a data.frame with column names and values that
depend on the model type, as follows.
(If all columns are optional, data may equal NULL.)
mleornightcolname class units need solar.time POSIXct,POSIXt required DO.obs numeric mgO2 L^-1 required DO.sat numeric mgO2 L^-1 required depth numeric m required temp.water numeric degC required light numeric umol m^-2 s^-1 required discharge numeric m^3 s^-1 optional Example:
solar.timeDO.obsDO.satdepthtemp.waterlightdischarge2050-03-14 15:10:0010.114.20.521.8300.99bayescolname class units need solar.time POSIXct,POSIXt required DO.obs numeric mgO2 L^-1 required DO.sat numeric mgO2 L^-1 required depth numeric m required temp.water numeric degC required light numeric umol m^-2 s^-1 required discharge numeric m^3 s^-1 optional Example:
solar.timeDO.obsDO.satdepthtemp.waterlightdischarge2050-03-14 15:10:0010.114.20.521.8300.99Kmodelcolname class units need solar.time POSIXct,POSIXt optional discharge numeric m^3 s^-1 optional velocity numeric m s^-1 optional Example:
solar.timedischargevelocity2050-03-14 15:10:0092simcolname class units need solar.time POSIXct,POSIXt required DO.obs numeric mgO2 L^-1 optional DO.sat numeric mgO2 L^-1 required depth numeric m required temp.water numeric degC required light numeric umol m^-2 s^-1 required Example:
solar.timeDO.obsDO.satdepthtemp.waterlight2050-03-14 15:10:0010.114.20.521.8300.9
Formatting data_daily
Daily-value model inputs passed via the data_daily argument should
be formatted as a data.frame with column names and values that
depend on the model type, as follows.
(If all columns are optional, data_daily may equal NULL.)
nightNULLmlecolname class units need date Date optional K600.daily numeric d^-1 optional init.GPP.daily numeric gO2 d^-1 m^-2 optional init.Pmax numeric gO2 d^-1 m^-2 optional init.alpha numeric gO2 s d^-1 umol^-1 optional init.ER.daily numeric gO2 d^-1 m^-2 optional init.ER20 numeric gO2 d^-1 m^-2 optional init.K600.daily numeric d^-1 optional Example:
dateK600.dailyinit.GPP.dailyinit.Pmaxinit.alphainit.ER.dailyinit.ER20init.K600.daily2050-03-14105101e-04-10-1010bayescolname class units need date Date optional discharge.daily numeric m^3 s^-1 optional Example:
datedischarge.daily2050-03-149Kmodelcolname class units need date Date required K600.daily numeric d^-1 required K600.daily.lower numeric d^-1 optional K600.daily.upper numeric d^-1 optional discharge.daily numeric m^3 s^-1 optional velocity.daily numeric m s^-1 optional Example:
dateK600.dailyK600.daily.lowerK600.daily.upperdischarge.dailyvelocity.daily2050-03-14104.515.692simcolname class units need date Date optional discharge.daily numeric m^3 s^-1 optional DO.mod.1 numeric mgO2 L^-1 optional K600.daily numeric d^-1 optional GPP.daily numeric gO2 d^-1 m^-2 optional Pmax numeric gO2 d^-1 m^-2 optional alpha numeric gO2 s d^-1 umol^-1 optional ER.daily numeric gO2 d^-1 m^-2 optional ER20 numeric gO2 d^-1 m^-2 optional err.obs.sigma numeric mgO2 L^-1 optional err.obs.phi numeric optional err.proc.sigma numeric gO2 d^-1 m^-2 optional err.proc.phi numeric optional Example:
datedischarge.dailyDO.mod.1K600.dailyGPP.dailyPmaxalphaER.dailyER20err.obs.sigmaerr.obs.phierr.proc.sigmaerr.proc.phi2050-03-1497.5105101e-04-10-100.01050
Examples
dat <- data_metab(num_days='3')
# fit a basic MLE model
mm <- metab(specs(mm_name('mle')), data=dat, info='my info')
predict_metab(mm)
#> date GPP GPP.lower GPP.upper ER ER.lower ER.upper
#> 1 2012-09-18 2.812955 2.435230 3.190680 -2.103521 -2.410113 -1.796930
#> 2 2012-09-19 3.277526 2.866958 3.688094 -2.470115 -2.808856 -2.131375
#> 3 2012-09-20 2.582700 2.313734 2.851666 -1.709653 -1.914700 -1.504606
#> msgs.fit warnings errors
#> 1
#> 2 W
#> 3
get_info(mm)
#> [1] "my info"
get_fitting_time(mm)
#> user system elapsed
#> 2.175 0.042 2.225
# with chaining & customization
library(dplyr)
#> ------------------------------------------------------------------------------
#> You have loaded dplyr after unitted - this is likely to cause problems.
#> If you need functions from both dplyr and unitted, please load dplyr first, then unitted:
#> library(dplyr); library(unitted)
#> ------------------------------------------------------------------------------
#>
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#>
#> filter, lag
#> The following objects are masked from ‘package:base’:
#>
#> intersect, setdiff, setequal, union
mm <- mm_name('mle', ode_method='euler') %>%
specs(init.GPP.daily=40) %>%
metab(data=dat)
predict_metab(mm)
#> date GPP GPP.lower GPP.upper ER ER.lower ER.upper
#> 1 2012-09-18 2.809444 2.402234 3.216654 -2.098404 -2.427638 -1.769169
#> 2 2012-09-19 3.271351 2.838930 3.703772 -2.463138 -2.818887 -2.107388
#> 3 2012-09-20 2.568592 2.286376 2.850807 -1.697389 -1.911571 -1.483207
#> msgs.fit warnings errors
#> 1 W
#> 2 W
#> 3 W
if (FALSE) {
plot_DO_preds(predict_DO(mm))
plot_DO_preds(predict_DO(mm), y_var='pctsat', style='dygraphs')
}