#' Calculation of the Area under a Curve (Trapezoidal numerical integration)
#'
#' This is equivalent to Matlab's trapz function.
#'
#' @param x
#' This is the scalar spacing of the coordinate.
#' When the argument for 'x' is not provided, it will calculates the
#' approximate integral value for ‘Y’ with unit spacing based on the length of ‘y’.
#'
#' @param y
#' Numerical data. The length of x and y must be equal.
#'
#' @importFrom zoo rollmean
#'
#' @export
#' @return
#' A vector that is the value from the trapezoidal integration is returned.
#' @examples
#' library(smplot2)
#' X = c(1,2,3,4,5)
#' Y1 = c(2,3,4,2,3)
#' Y2 = c(3,3,3,3,3)
#'
#' sm_auc(X,Y2)
#' sm_auc(X,Y1)
sm_auc <- function(x,y) {
if (is.null(x)) {
n <- length(y)
res <- 0.5*(y[1]+y[n]+2*sum(y[-c(1,n)]))
} else {
id <- order(x)
res <- sum(diff(x[id])* rollmean(y[id],2))
}
return(res)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.