期望值#
- scipy.stats.expectile(a, alpha=0.5, *, weights=None)[源代码][源代码]#
计算指定水平下的期望值。
期望值(Expectiles)是期望的一种推广,就像分位数是中位数的一种推广。在水平 alpha = 0.5 处的期望值是均值(平均值)。更多详情请参见注释。
- 参数:
- aarray_like
包含所需期望值的数字数组。
- alphafloat, 默认值: 0.5
期望水平的级别;例如,alpha=0.5 给出均值。
- 权重类似数组, 可选
与 a 中的值相关联的权重数组。weights 必须能够广播到与 a 相同的形状。默认值为 None,即每个值的权重为 1.0。整数值的权重元素相当于将 a 中对应的观测值重复那么多次。更多详情请参见注释。
- 返回:
- 期望值ndarray
在水平
alpha
上的经验期望值。
参见
numpy.mean
算术平均数
numpy.quantile
分位数
注释
一般来说,随机变量 \(X\) 在累积分布函数 (CDF) \(F\) 下的水平 \(\alpha\) 的期望值由以下唯一解 \(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) \,.\]在水平 \(\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 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
示例
>>> 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]