当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy mstats.sen_seasonal_slopes用法及代码示例


本文简要介绍 python 语言中 scipy.stats.mstats.sen_seasonal_slopes 的用法。

用法:

scipy.stats.mstats.sen_seasonal_slopes(x)#

计算季节性 Theil-Sen 和 Kendall 斜率估计器。

Sen 斜率的季节性概括计算 2D 数组的 “season”(列)内所有值对之间的斜率。它返回一个数组,其中包含每个季节的 “within-season” 斜率中位数(每个季节的 Theil-Sen 斜率估计器),并返回所有季节的 within-season 斜率中位数(季节性 Kendall 斜率估计器)。

参数

x 类似二维数组

每一列x包含一个季节内因变量的测量值。每个季节的自变量(通常是时间)假设为np.arange(x.shape[0]).

返回

result SenSeasonalSlopesResult 实例

返回值是一个具有以下属性的对象:

intra_slope ndarray

对于每个季节,Theil-Sen 坡度估计器:within-season 坡度的中值。

inter_slope 浮点数

季节性肯德尔斜率估计器:所有季节within-season 斜率的中位数。

注意

季节内的坡度 为:

对于 的不同整数索引对

元素\(i\) 归来的intra_slope数组是中位数\(d_{ijk}\) 全面的\(j < k\) ;这是季节的 Theil-Sen 坡度估算器\(i\) 。返回的inter_slope值,更广为人知的名称是季节性肯德尔斜率估计器,是\(d_{ijk}\) 全面的\(i, j, k\) .

参考

[1]

罗伯特·M·赫希、詹姆斯·R·斯莱克和理查德·A·史密斯。 “月度水质数据趋势分析技术。”水资源研究18.1(1982):107-121。

例子

假设我们对四个季节中的每个季节的因变量有 100 个观测值:

>>> import numpy as np
>>> rng = np.random.default_rng()
>>> x = rng.random(size=(100, 4))

我们计算季节性斜率:

>>> from scipy import stats
>>> intra_slope, inter_slope = stats.mstats.sen_seasonal_slopes(x)

如果我们定义一个函数来计算一个季节内观测值之间的所有斜率:

>>> def dijk(yi):
...     n = len(yi)
...     x = np.arange(n)
...     dy = yi - yi[:, np.newaxis]
...     dx = x - x[:, np.newaxis]
...     # we only want unique pairs of distinct indices
...     mask = np.triu(np.ones((n, n), dtype=bool), k=1)
...     return dy[mask]/dx[mask]

那么 intra_slope 的元素 idijk[x[:, i]] 的中位数:

>>> i = 2
>>> np.allclose(np.median(dijk(x[:, i])), intra_slope[i])
True

inter_slopedijk 返回的所有季节值的中位数:

>>> all_slopes = np.concatenate([dijk(x[:, i]) for i in range(x.shape[1])])
>>> np.allclose(np.median(all_slopes), inter_slope)
True

由于数据是随机生成的,我们预计所有季节内和跨季节的中位斜率几乎为零,事实上它们是:

>>> intra_slope.data
array([ 0.00124504, -0.00277761, -0.00221245, -0.00036338])
>>> inter_slope
-0.0010511779872922058

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.mstats.sen_seasonal_slopes。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。