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 with cumulative distribution function (CDF) is given by the unique solution of:
Here, is the positive part of . This equation can be equivalently written as:
The empirical expectile at level (
alpha
) of a sample (the array a) is defined by plugging in the empirical CDF of a. Given sample or case weights (the array weights), it reads with indicator function . This leads to the definition of the empirical expectile at levelalpha
as the unique solution of:For , 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
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]