# ABC Analysis

## Curve

The basis for the ABC analysis is the `ABCcurve`

struct. This curve is similar to the Lorenz curve and represents the *effort* of an element and its its relative cumulative *yield* in decreasing order of gain.

`CalculatedABC.ABCcurve`

— Type`ABCcurve(data::Vector{<:Real})`

Construct an ABCcurve from the given data.

**Fields**

`effort::AbstractRange`

: The effort as equidistant steps between 0 and 1.`yield::Vector`

: The cumulative relative yield.`interpolation::AbstractInterpolation`

: A cubic spline interpolation of the curve.

## Analysis

An `ABCanalysis`

struct takes either a data array or a previously calculated `ABCcurve`

. It determines three points important for further analysis, the *Pareto point*, *Break Even point* and the *Submarginal point*. If you provide the raw data, it also gives back the indices of the elements in the sets *A*, *B* and *C*. For both curve and data input there are also convenience constructors `ABCanalysis`

.

`CalculatedABC.ABCanalysis4Curve`

— Type`ABCanalysis4Curve(curve::ABCcurve) <: ABCanalysis`

Calculate an ABC analysis for the given curve.

**Fields**

`pareto`

: Nearest point to a theoretically ideal Break Even point.`break_even`

: Point on the curve where the gain ($dABC$) is 1.`demark_AB`

Point on the curve at which most of the yield is already obtained; the smaller of the Pareto and Break Even points. Demarkation between*A*and*B*.`submarginal`

: Point on the curve after which the gain can be considered trivial. Demarkation between*B*and*C*.`curve`

: The given curve. Used for plotting.

`CalculatedABC.ABCanalysis4Data`

— Type`ABCanalysis4Data(data::Vector{<:Real}) <: ABCanalysis`

Calculate an ABC analysis for the given data.

**Fields**

Extends `ABCanalysis4Curve`

with:

`a_indices`

: Indices of elements in the*A*set.`b_indices`

: Indices of elements in the*B*set.`c_indices`

: Indices of elements in the*C*set.