Skip to content

Miscellaneous

auc(x, y, method='trapezoidal', sorted=False)

Computes the Area Under the Curve (AUC) via numerical integration.

Parameters:

Name Type Description Default
x ArrayLike

x points

required
y ArrayLike

y points

required
method Literal['rectangular', 'trapezoidal']

Integration method, by default "trapezoidal"

'trapezoidal'
sorted bool

If True, assumes arrays are already sorted by x, by default False

False

Returns:

Type Description
float

The AUC

Raises:

Type Description
ValueError

If method is not one of rectangular or trapezoidal

Added in version 0.1.0
Source code in python/rapidstats/_general.py
 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
49
50
51
def auc(
    x: ArrayLike,
    y: ArrayLike,
    method: Literal["rectangular", "trapezoidal"] = "trapezoidal",
    sorted: bool = False,
) -> float:
    """Computes the Area Under the Curve (AUC) via numerical integration.

    Parameters
    ----------
    x : ArrayLike
        x points
    y : ArrayLike
        y points
    method : Literal["rectangular", "trapezoidal"], optional
        Integration method, by default "trapezoidal"
    sorted : bool, optional
        If True, assumes arrays are already sorted by `x`, by default False

    Returns
    -------
    float
        The AUC

    Raises
    ------
    ValueError
        If `method` is not one of `rectangular` or `trapezoidal`

    Added in version 0.1.0
    ----------------------
    """
    df = pl.DataFrame({"x": x, "y": y}).drop_nulls().cast(pl.Float64)

    if not sorted:
        df = df.sort("x", descending=False)

    if method == "rectangular":
        return _rectangular_auc(df)
    elif method == "trapezoidal":
        return _trapezoidal_auc(df)
    else:
        raise ValueError("`method` must be one of `rectangular` or `trapezoidal`")