expectile#
- scipy.stats.expectile(a, alpha=0.5, *, weights=None)[来源]#
计算指定水平的 expectile。
Expectile 是期望的推广,就像分位数是中位数的推广一样。 水平 alpha = 0.5 时的 expectile 是均值(平均值)。 有关更多详细信息,请参见注释。
- 参数:
- aarray_like
包含想要计算 expectile 的数字的数组。
- alphafloat, default: 0.5
expectile 的水平;例如,
alpha=0.5
给出均值。- weightsarray_like, optional
与 a 中的值关联的权重数组。 weights 必须可广播到与 a 相同的形状。 默认为 None,这会给每个值赋予 1.0 的权重。 一个整数值权重元素的作用类似于在 a 中重复相应观测值那么多次。 有关更多详细信息,请参见注释。
- 返回:
- expectilendarray
水平
alpha
处的经验 expectile。
另请参见
numpy.mean
算术平均值
numpy.quantile
分位数
注释
一般来说,随机变量 \(X\) 在水平 \(\alpha\) 处的 expectile,其累积分布函数 (CDF) 为 \(F\),由唯一解 \(t\) 给出:
\[\alpha E((X - t)_+) = (1 - \alpha) E((t - X)_+) \,.\]这里,\((x)_+ = \max(0, x)\) 是 \(x\) 的正部分。 这个方程可以等价地写成:
\[\alpha \int_t^\infty (x - t)\mathrm{d}F(x) = (1 - \alpha) \int_{-\infty}^t (t - x)\mathrm{d}F(x) \,.\]样本 \(a_i\)(数组 a)在水平 \(\alpha\)(
alpha
)处的经验 expectile 是通过插入 a 的经验 CDF 来定义的。 给定样本或案例权重 \(w\)(数组 weights),它读取 \(F_a(x) = \frac{1}{\sum_i w_i} \sum_i w_i 1_{a_i \leq x}\),其中指示函数为 \(1_{A}\)。 这导致在水平alpha
处的经验 expectile 的定义为唯一解 \(t\):\[\alpha \sum_{i=1}^n w_i (a_i - t)_+ = (1 - \alpha) \sum_{i=1}^n w_i (t - a_i)_+ \,.\]对于 \(\alpha=0.5\),这简化为加权平均值。 此外,\(\alpha\) 越大,expectile 的值越大。
最后,水平 \(\alpha\) 处的 expectile 也可以写成一个最小化问题。 一个经常使用的选择是:
\[\operatorname{argmin}_t E(\lvert 1_{t\geq X} - \alpha\rvert(t - X)^2) \,.\]参考文献
[1]W. K. Newey 和 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
示例
>>> 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] >>> expectile(a, alpha=0.8, weights=weights) 3.3333333333333335