scipy.stats.

expectile#

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

计算指定水平的期望值。

期望值是对均值的推广,如同分位数是对中值的推广。期望值在水平alpha=0.5 时的期望值就是均值(平均值)。请参阅备注了解更多详细信息。

参数:
a类数组

包含希望计算其期望值的数字的数组。

alpha浮点数,默认:0.5

期望值的水平;例如,alpha=0.5给出均值。

weights类数组,可选

a 中的值相关联的权重数组。weights 必须可以广播为与 a 相同的形状。默认值为 None,它使每个值具有 1.0 的权重。整数值权重元素就像在 a 中重复相应观察值很多次。请参阅备注了解更多详细信息。

返回:
expectilendarray

级别 alpha 时的经验期望值。

另请参见

numpy.mean

算术平均值

numpy.quantile

分位数

备注

一般而言,累积分布函数 (CDF) 为 \(\alpha\) 级的随机变量 \(X\) 的预期值为

\[\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) \,.\]

\(\alpha\) 级(alpha)的样本 \(a_i\)(数组 a)的经验预期值定义为插入 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 级经验预期值的定义,为 \(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\) 越大,预期值的越大。

最后需要注意的是,\(\alpha\) 级的预期值也可以写成最小化问题。通常使用的一个选择是

\[\operatorname{argmin}_t E(\lvert 1_{t\geq X} - \alpha\rvert(t - X)^2) \,.\]

参考

[1]

W. K. Newey 和 J. L. Powell (1987),“非对称最小平方估计和检验”,计量经济学,55,819-847。

[2]

T. Gneiting (2009)。“制作和评估重点预测”,美国统计协会杂志,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]