calcSMR: Calculates SMR using different methods,

Description Usage Arguments Details Value Author(s) References Examples

View source: R/calcSMR.R

Description

Calculates Standard Metabolic Rate (SMR) using several methods, the user then look into the resulting object and picks the result(s) of his/her choice.

Usage

1
calcSMR(Z, q = c(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5), G = 1:4)

Arguments

Z

A vector of oxygen uptake (MO2) values for a single animal resulting from intermittent-flow or open-flow respirometry.

q

p-values for the quantiles to be calculated.

G

The maximum number of distributions to fit to the data with the MLND method.

Details

This function accepts a vector of oxygen uptake values recorded from a single animal over a period of a few hours to a few days and calculates Standard Metabolic Rate (SMR) according to several methods reviewed by Chabot et al. (2016). NAs are excluded.

Value

Returns a list containing several estimations of SMR and some additional results.

The details of the output components are as follows:

mlnd

The Mean of the Lowest Normal Distribution, calculated by Mclust.

quant

A vector of quantile values, with length = number of values in parameter q.

low10

The mean of the 10 lowest oxygen uptake values (vector Z).

low10pc

The mean of the 10% lowest oxygen uptake values (vector Z), after removing the 5 lowest values, which are assumed to be outliers (abnormally low values).

low10_2pc

The mean of the 10 lowest oxygen uptake values (vector Z), after removing the 2% lowest values, which are assumed to be outliers (abnormally low values).

cl

A vector of same length as Z containing the number of the distribution assigned to each oxygen uptake value by Mclust. This can be useful to assign different plot symbols to oxygen uptake values that belong to different normal distributions.

theSMRdistr

The number of the normal distribution that is used to estimate SMR. Normally this is 1 (the lowest normal distribution). In some rare cases, Mclust identifies a small normal distribution with only a few aberrently low values. This distribution does not represent SMR. As an attempt to prevent this small distribution (if present) from being used to estimate SMR, the script requires that the lowest normal distribution containing at least 10% of the oxygen uptake values be used as SMR.

CVmlnd

The coefficient of variation (in % of MLND) of the oxygen uptake values assigned to the lowest normal distribution. Chabot et al. (2016) use this to assess whether the MLND method should be used to estimate SMR or not. When it cannot (CV > 5.4%), they recommend using the quantile method with p = 0.2.

Results are in same units as the elements of Z (e.g., oxygen units (mg, ml, mmol, µmol, etc.) per time unit (min, hr), per whole individual or per mass unig (kg, g, etc.)

Author(s)

Denis Chabot, Maurice-Lamontagne Institute, DFO, Canada.

References

Chabot, D., Steffensen, J. F. and Farrell, A. P. (2016) The determination of the standard metabolic rate in fishes. Journal of Fish Biology 88, 81-121.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
mo2 = c(rnorm(25, 150, 5), rnorm(50, 90, 3), rnorm(100, 50, 2))
smr = calcSMR(mo2)
smr
SMR = as.numeric(ifelse(smr$CVmlnd > 5.4, smr$quant[4], smr$mlnd)) # as recommended in Chabot et al. 2016

# with real data, Greenland halibut
data(GrHalO2crit)
# to ensure that the data are shown in the time zone where the experiment
# took place, regardless of your computer's time zone:
attr(GrHalO2crit$DateTime, "tzone") = "EST"
plotMO2(GrHalO2crit$DateTime, GrHalO2crit$MO2, mgp=c(2,0.5,0))

# remove a 10-h acclimation period, as recommended in Chabot et al. (2016);
# also remove the last 11 h, when DO was decreasing to calculate O2crit.
# There were no low R^2s that required removal
smrData = subset(GrHalO2crit, DateTime >= DateTime[1] + 10*60*60 &
                 DateTime <= DateTime[nrow(GrHalO2crit)] - 11*60*60)
smr = calcSMR(smrData$MO2); smr
# as recommended in Chabot et al. 2016
SMR = as.numeric(ifelse(smr$CVmlnd > 5.4, smr$quant[4], smr$mlnd)); SMR
abline(h=SMR, col="orange")

# with real data, cod
data("codSDA")
# There was a sham-feeding 25.65 h before feeding. On average the
# sham-feeding increased MO2 for about 10 h.
# This period, as well as after the meal and during the first period in the
# respirometer should be removed before calculating SMR
# This fish took a long time to calm down, the acclimation period was set
# to 24 h
start = -97.22  # first MO2
sham = -25.65   # time of sham-feeding
acclim = 24     # nb of hours to exclude because of handling stress,
                # this fish took a long time to calm down
sham.acclim = 10  # nb of hours after sham-feeding with elevated MO2
minR2 = 0.96

smr.data = subset(codSDA, r2 > minR2 &
                  ((Logtime_hr >= (start + acclim) & Logtime_hr < sham ) |
                  (Logtime_hr >= (sham + sham.acclim) & Logtime_hr < 0))
                  )
dim(smr.data)
SMR = calcSMR(smr.data$MO2cor, q=0.2)
bestSMR = ifelse(SMR$CVmlnd > 5.4, SMR$quant, SMR$mlnd)
bestSMR
plotMO2(codSDA$DateTime, codSDA$MO2cor, mgp=c(2,0.5,0), col="grey")
points(smr.data$DateTime, smr.data$MO2cor, col="blue")
abline(h=bestSMR, col="orange")

denis-chabot/fishMO2 documentation built on July 16, 2020, 1:53 a.m.