當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy stats.linregress用法及代碼示例


本文簡要介紹 python 語言中 scipy.stats.linregress 的用法。

用法:

scipy.stats.linregress(x, y=None, alternative='two-sided')#

計算兩組測量值的線性最小二乘回歸。

參數

x, y array_like

兩組測量。兩個數組應該具有相同的長度。要是x給出(和y=None),那麽它必須是一個二維數組,其中一維的長度為 2。然後通過沿長度為 2 的維度拆分數組來找到兩組測量值。在這種情況下y=Nonex是一個 2x2 數組,linregress(x)相當於linregress(x[0], x[1]).

alternative {‘雙麵’,‘less’, ‘greater’},可選

定義備擇假設。默認為“雙麵”。可以使用以下選項:

  • “雙麵”:回歸線的斜率不為零

  • ‘less’:回歸線的斜率小於零

  • ‘greater’:回歸線的斜率大於零

返回

result LinregressResult 實例

返回值是一個具有以下屬性的對象:

浮點數

回歸線的斜率。

截距 浮點數

回歸線的截距。

右值 浮點數

皮爾遜相關係數。 rvalue 的平方等於決定係數。

p值 浮點數

假設檢驗的 p 值,其原假設是斜率為零,使用帶有檢驗統計量 t 分布的 Wald 檢驗。有關替代假設,請參閱上麵的替代方案。

標準錯誤 浮點數

在殘差正態性假設下,估計斜率(梯度)的標準誤差。

intercept_stderr 浮點數

在殘差正態性假設下,估計截距的標準誤差。

注意

缺失值被視為成對的:如果 x 中缺失某個值,則 y 中的對應值將被屏蔽。

為了與舊版本的 SciPy 兼容,返回值的作用類似於長度為 5 的 namedtuple,帶有字段 slopeinterceptrvaluepvaluestderr ,因此可以繼續編寫:

slope, intercept, r, p, se = linregress(x, y)

然而,使用這種風格,截距的標準誤差不可用。要訪問所有計算值,包括截距的標準誤差,請將返回值用作具有屬性的對象,例如:

result = linregress(x, y)
print(result.intercept, result.intercept_stderr)

例子

>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy import stats
>>> rng = np.random.default_rng()

生成一些數據:

>>> x = rng.random(10)
>>> y = 1.6*x + rng.random(10)

執行線性回歸:

>>> res = stats.linregress(x, y)

確定係數(R-squared):

>>> print(f"R-squared: {res.rvalue**2:.6f}")
R-squared: 0.717533

將數據與擬合線一起繪製:

>>> plt.plot(x, y, 'o', label='original data')
>>> plt.plot(x, res.intercept + res.slope*x, 'r', label='fitted line')
>>> plt.legend()
>>> plt.show()
scipy-stats-linregress-1_00_00.png

計算斜率和截距的 95% 置信區間:

>>> # Two-sided inverse Students t-distribution
>>> # p - probability, df - degrees of freedom
>>> from scipy.stats import t
>>> tinv = lambda p, df: abs(t.ppf(p/2, df))
>>> ts = tinv(0.05, len(x)-2)
>>> print(f"slope (95%): {res.slope:.6f} +/- {ts*res.stderr:.6f}")
slope (95%): 1.453392 +/- 0.743465
>>> print(f"intercept (95%): {res.intercept:.6f}"
...       f" +/- {ts*res.intercept_stderr:.6f}")
intercept (95%): 0.616950 +/- 0.544475

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.linregress。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。