本文簡要介紹 python 語言中 scipy.stats.linregress
的用法。
用法:
scipy.stats.linregress(x, y=None, alternative='two-sided')#
計算兩組測量值的線性最小二乘回歸。
- x, y: array_like
兩組測量。兩個數組應該具有相同的長度。要是x給出(和
y=None
),那麽它必須是一個二維數組,其中一維的長度為 2。然後通過沿長度為 2 的維度拆分數組來找到兩組測量值。在這種情況下y=None
和x是一個 2x2 數組,linregress(x)
相當於linregress(x[0], x[1])
.- alternative: {‘雙麵’,‘less’, ‘greater’},可選
定義備擇假設。默認為“雙麵”。可以使用以下選項:
“雙麵”:回歸線的斜率不為零
‘less’:回歸線的斜率小於零
‘greater’:回歸線的斜率大於零
- result:
LinregressResult
實例 返回值是一個具有以下屬性的對象:
- 坡 浮點數
回歸線的斜率。
- 截距 浮點數
回歸線的截距。
- 右值 浮點數
皮爾遜相關係數。
rvalue
的平方等於決定係數。- p值 浮點數
假設檢驗的 p 值,其原假設是斜率為零,使用帶有檢驗統計量 t 分布的 Wald 檢驗。有關替代假設,請參閱上麵的替代方案。
- 標準錯誤 浮點數
在殘差正態性假設下,估計斜率(梯度)的標準誤差。
- intercept_stderr 浮點數
在殘差正態性假設下,估計截距的標準誤差。
- result:
參數 ::
返回 ::
注意:
缺失值被視為成對的:如果 x 中缺失某個值,則 y 中的對應值將被屏蔽。
為了與舊版本的 SciPy 兼容,返回值的作用類似於長度為 5 的
namedtuple
,帶有字段slope
、intercept
、rvalue
、pvalue
和stderr
,因此可以繼續編寫: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()
計算斜率和截距的 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
相關用法
- Python SciPy stats.levy_stable用法及代碼示例
- Python SciPy stats.lognorm用法及代碼示例
- Python SciPy stats.logrank用法及代碼示例
- Python SciPy stats.loglaplace用法及代碼示例
- Python SciPy stats.laplace用法及代碼示例
- Python SciPy stats.levy_l用法及代碼示例
- Python SciPy stats.loguniform用法及代碼示例
- Python SciPy stats.logistic用法及代碼示例
- Python SciPy stats.levene用法及代碼示例
- Python SciPy stats.levy用法及代碼示例
- Python SciPy stats.logser用法及代碼示例
- Python SciPy stats.loggamma用法及代碼示例
- Python SciPy stats.lomax用法及代碼示例
- Python SciPy stats.laplace_asymmetric用法及代碼示例
- Python SciPy stats.anderson用法及代碼示例
- Python SciPy stats.iqr用法及代碼示例
- Python SciPy stats.genpareto用法及代碼示例
- Python SciPy stats.skewnorm用法及代碼示例
- Python SciPy stats.cosine用法及代碼示例
- Python SciPy stats.norminvgauss用法及代碼示例
- Python SciPy stats.directional_stats用法及代碼示例
- Python SciPy stats.invwishart用法及代碼示例
- Python SciPy stats.bartlett用法及代碼示例
- Python SciPy stats.page_trend_test用法及代碼示例
- Python SciPy stats.itemfreq用法及代碼示例
注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.stats.linregress。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。