# utils_stats: Summary statistics utilities In phytomosaic/ecole: ecole: School of Ecology Package

## Description

Vectorized summary statistics, including geometric mean, harmonic mean, sample standard error (SE), coefficient of variation (CV), root mean square error (RMSE), mean absolute error (MAE), and sensitivity.

## Usage

 ``` 1 2 3 4 5 6 7 8 9 10 11``` ```geom_mean(x, na.rm = TRUE, zero.rm = FALSE, ...) harm_mean(x, na.rm = TRUE, zero.rm = FALSE, ...) sem(x, na.rm = TRUE, ...) cv(x, na.rm = TRUE, ...) rmse(x, y, na.rm = TRUE, ...) mae(x, y, stdz = FALSE, na.rm = TRUE, ...) ```

## Arguments

 `x` vector of values to evaluate `na.rm` logical indicating whether NA values in `x` should be removed before proceeding `zero.rm` logical indicating whether zeros in `x` should be removed before calculating harmonic or geometric means `...` further arguments passed to other methods `y` vector of 'predicted' values to compare against `x` `stdz` logical, standardize output by range of `x`?

## Details

For vectors including at least one zero, results of `geom_mean` and `harm_mean` are always 0 by definition, unless `zero.rm=TRUE`.

Like `sd`, `sem` uses n-1 in denominator to correct for small-sample bias.

`rmse` is one way to assess prediction accuracy.

`mae` gives a measure of sensitivity when `stdz=TRUE`.

These functions return NA when NAs present and `na.rm=TRUE`.

## Value

Numeric value.

`sd`
 ``` 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``` ```# test data xx <- c(-1, 0, 1, 4, 77, NA) # harmonic mean harm_mean(xx, na.rm=TRUE, zero.rm=FALSE) # 0 by definition harm_mean(xx, na.rm=TRUE, zero.rm=TRUE) # 15.20988 # geometric mean ### NOT RUN: # geom_mean(xx, na.rm=TRUE, zero.rm=FALSE)) # fails for neg vals ### END NOT RUN xx <- xx[-1] # remove negative values geom_mean(xx, na.rm=TRUE, zero.rm=FALSE) # 0 by definition geom_mean(xx, na.rm=TRUE, zero.rm=TRUE) # 6.753313 # standard error of the mean sem(xx) # 21.76899 # coefficient of variation cv(xx) # 183.9268 # root mean squared error set.seed(23) xx <- c(-1, 0, 1, 4, 77, NA) yy <- xx+rnorm(length(xx), 10) rmse(xx, yy) # 10.71919 rmse(yy, xx) # same, order invariant # mean absolute error mae(xx, yy, stdz=FALSE) # 10.69236 # range-standardized mean absolute error (aka sensitivity) mae(xx, yy, stdz=TRUE) # 0.1370815 mae(yy, xx, stdz=TRUE) # 0.135684 -- order matters! ```