Area Under the Curve
Calculate the area under the curve with a naive algorithm and with a more elaborated spline approach. The curve must be given by vectors of xy-coordinates.
AUC(x, y, from = min(x, na.rm = TRUE), to = max(x, na.rm = TRUE), method = c("trapezoid", "step", "spline", "linear"), absolutearea = FALSE, subdivisions = 100, na.rm = FALSE, ...)
x, y |
the xy-points of the curve |
method |
The type of interpolation. Can be |
from |
The value from where to start calculating the area under the curve. Defaults to the smallest x value. |
to |
The value from where to end the calculation of the area under the curve. Defaults to the greatest x value. |
absolutearea |
A logical value that determines if negative
areas should be added to the total area under the curve. By
default the auc function subtracts areas that have negative y
values. Set |
subdivisions |
an integer telling how many subdivisions should be used for integrate (for non-linear approximations). Ignored if |
na.rm |
logical, indicating whether |
... |
additional arguments passed on to approx (for linear approximations). In particular rule can be set to determine how values outside the range of x is handled. |
If method is set to "trapezoid"
then the curve is formed by connecting all points by a direct line (composite trapezoid rule). If "step"
is chosen then a stepwise connection of two points is used.
For linear interpolation the AUC()
function computes the area under the curve
using the composite trapezoid rule. For area under a spline interpolation,
AUC()
uses the splinefun function in combination with the integrate to
calculate a numerical integral.
The AUC()
function can handle unsorted time
values (by sorting x), missing observations, ties for the x values (by ignoring duplicates), and integrating over
part of the area or even outside the area.
Numeric value of the area under the curve.
Andri Signorell <andri@signorell.net>, spline part by Claus Ekstrom <claus@rprimer.dk>
AUC(x=c(1,3), y=c(1,1)) AUC(x=c(1,2,3), y=c(1,2,4), method="trapezoid") AUC(x=c(1,2,3), y=c(1,2,4), method="step") plot(x=c(1,2,2.5), y=c(1,2,4), type="l", col="blue", ylim=c(0,4)) lines(x=c(1,2,2.5), y=c(1,2,4), type="s", col="red") x <- seq(0, pi, length.out=200) AUC(x=x, y=sin(x)) AUC(x=x, y=sin(x), method="spline")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.