scipy.stats.theilslopes

scipy.stats.theilslopes(y, x=None, alpha=0.95, method='separate')[源代码]

计算一组点(x,y)的Theil-Sen估计量。

theilslopes 实现稳健线性回归的方法。它将坡度计算为成对值之间所有坡度的中位数。

参数
yarray_like

因变量。

xARRAY_LIKE或NONE,可选

自变量。如果没有,则使用 arange(len(y)) 取而代之的是。

alpha浮动,可选

置信度介于0和1之间。默认值为95%置信度。请注意, alpha 在0.5左右对称,即0.1和0.9都被解释为“找到90%的置信区间”。

method{‘联合’,‘分离’},可选

用于计算截获估计值的方法。支持以下方式:

  • ‘JOIN’:使用np.Medium(y-MEDSLOPE*x)作为截距。

  • ‘Separate’:使用np.Medium(Y)-MEDSLOPE*np.Medium(X)

    作为拦截。

默认值为“独立”。

1.8.0 新版功能.

退货
medslope浮动

泰尔坡。

medintercept浮动

拦截泰尔线。

lo_slope浮动

上置信区间的下界 medslope

up_slope浮动

上置信区间的上界 medslope

参见

siegelslopes

使用重复介质的类似技术

注意事项

该计划的实施 theilslopes 下面是 [1]. 截取未在中定义 [1], 在这里,它被定义为 median(y) - medslope*median(x) ,它在 [3]. 在文献中存在对截取的其他定义,例如 median(y - medslope*x) 在……里面 [4]. 截距的计算方法可以由参数决定 method 。未给出截取的置信区间,因为此问题未在 [1].

参考文献

1(1,2,3)

P.K.Sen,“基于Kendall‘s tau的回归系数估计”,J.Am统计一下。协会,第63卷,第1379-1389页,1968年。

2

H.Theil,“线性和多项式回归分析的秩不变方法I,II和III”,Nederl。阿卡德。书名:Wetensch.,Proc.53:,第386-392页,第521-525页,第1397-1412页,1950年。

3

W.L.Conover,“实用非参数统计”,第二版,John Wiley父子出版社,纽约,第493页。

4

https://en.wikipedia.org/wiki/Theil%E2%80%93Sen_estimator

示例

>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-5, 5, num=150)
>>> y = x + np.random.normal(size=x.size)
>>> y[11:15] += 10  # add outliers
>>> y[-5:] -= 7

计算斜率、截距和90%置信区间。为了进行比较,还要计算与的最小二乘拟合 linregress

>>> res = stats.theilslopes(y, x, 0.90, method='separate')
>>> lsq_res = stats.linregress(x, y)

绘制结果图。泰尔-森回归线以红色显示,红线虚线表示斜率的置信区间(请注意,红线虚线不是回归的置信区间,因为不包括截取的置信区间)。绿线显示适合比较的最小二乘法。

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot(x, y, 'b.')
>>> ax.plot(x, res[1] + res[0] * x, 'r-')
>>> ax.plot(x, res[1] + res[2] * x, 'r--')
>>> ax.plot(x, res[1] + res[3] * x, 'r--')
>>> ax.plot(x, lsq_res[1] + lsq_res[0] * x, 'g-')
>>> plt.show()
../../_images/scipy-stats-theilslopes-1.png