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
根据文件,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])
仅使用scipy,如何获得截距的p值(0.40795314163864016)?
2条答案
按热度按时间70gysomp1#
要计算截距的p值,请执行以下操作:
tvalue
)pvalue
)scipy案例的Python代码:
输出:
与使用
statsmodels
获得的结果进行比较:输出:
条注解
intercept_stderr
的LinregressResult
对象参考文献
unhi4e5o2#
来自SciPy.org的文档:https://docs.scipy.org/doc/scipy-.14.0/reference/generated/scipy.stats.linregress.html
输出功率
相关系数平方:0.15286643777
对于其他参数,请尝试: