scipy.stats.linregress - 获取截距的 p 值

And*_*ges 8 python statistics scipy statsmodels

scipy.stats.linregress返回与斜率相对应的 p 值,但没有截距的 p 值。考虑文档中的以下示例:

>>> from scipy import stats
>>> import numpy as np
>>> x = np.random.random(10)
>>> y = np.random.random(10)
>>> slope, intercept, r_value, p_value, std_err = stats.linregress(x,y)
>>> p_value
0.40795314163864016
Run Code Online (Sandbox Code Playgroud)

根据文档,p-value是“假设检验的两侧 p 值,其零假设是斜率为零。” 我想获得相同的统计数据,但是是截距而不是斜率。

statsmodels.regression.linear_model.OLS返回两个开箱即用的系数的 p 值:

>>> import numpy as np

>>> import statsmodels.api as sm

>>> X = sm.add_constant(x)
>>> model = sm.OLS(y,X)
>>> results = model.fit()
>>> results.pvalues
array([ 0.00297559,  0.40795314])    
Run Code Online (Sandbox Code Playgroud)

仅使用 scipy,如何获得截距的 p 值(0.40795314163864016)?

小智 -2

来自 SciPy.org 文档: https://docs.scipy.org/doc/scipy-.14.0/reference/ generated/scipy.stats.linregress.html

print "r-squared:", r_value**2
Run Code Online (Sandbox Code Playgroud)

输出

r 平方:0.15286643777

对于其他参数,请尝试:

print ('Intercept is: ', (intercept))
print ('Slope is: ', (slope))
print ('R-Value is: ', (r_value))
print ('Std Error is: ', (std_err))
print ('p-value is: ', (p_value))
Run Code Online (Sandbox Code Playgroud)

  • 问题是截距的 p 值。这不是一个答案。 (2认同)