scipy.stats.

expectile#

scipy.stats.expectile(a, alpha=0.5, *, weights=None)[source]#

Compute the expectile at the specified level.

Expectiles are a generalization of the expectation in the same way as quantiles are a generalization of the median. The expectile at level alpha = 0.5 is the mean (average). See Notes for more details.

Parameters:
aarray_like

Array containing numbers whose expectile is desired.

alphafloat, default: 0.5

The level of the expectile; e.g., alpha=0.5 gives the mean.

weightsarray_like, optional

An array of weights associated with the values in a. The weights must be broadcastable to the same shape as a. Default is None, which gives each value a weight of 1.0. An integer valued weight element acts like repeating the corresponding observation in a that many times. See Notes for more details.

Returns:
expectilendarray

The empirical expectile at level alpha.

See also

numpy.mean

Arithmetic average

numpy.quantile

Quantile

Notes

In general, the expectile at level α of a random variable X with cumulative distribution function (CDF) F is given by the unique solution t of:

αE((Xt)+)=(1α)E((tX)+).

Here, (x)+=max(0,x) is the positive part of x. This equation can be equivalently written as:

αt(xt)dF(x)=(1α)t(tx)dF(x).

The empirical expectile at level α (alpha) of a sample ai (the array a) is defined by plugging in the empirical CDF of a. Given sample or case weights w (the array weights), it reads Fa(x)=1iwiiwi1aix with indicator function 1A. This leads to the definition of the empirical expectile at level alpha as the unique solution t of:

αi=1nwi(ait)+=(1α)i=1nwi(tai)+.

For α=0.5, this simplifies to the weighted average. Furthermore, the larger α, the larger the value of the expectile.

As a final remark, the expectile at level α can also be written as a minimization problem. One often used choice is

argmintE(|1tXα|(tX)2).

References

[1]

W. K. Newey and J. L. Powell (1987), “Asymmetric Least Squares Estimation and Testing,” Econometrica, 55, 819-847.

[2]

T. Gneiting (2009). “Making and Evaluating Point Forecasts,” Journal of the American Statistical Association, 106, 746 - 762. DOI:10.48550/arXiv.0912.0902

Examples

>>> import numpy as np
>>> from scipy.stats import expectile
>>> a = [1, 4, 2, -1]
>>> expectile(a, alpha=0.5) == np.mean(a)
True
>>> expectile(a, alpha=0.2)
0.42857142857142855
>>> expectile(a, alpha=0.8)
2.5714285714285716
>>> weights = [1, 3, 1, 1]