当运行线性回归时,如y=a*x+b
,摘要给出了参数是否等于零的p值,如果我想看到参数a
是否等于2或者不等于零的p值怎么办?
我期望OLS摘要给出a
是否与2不同的p值。
结果类具有假设检验的方法。其中大多数是基于Wald测试,即我们估计完整模型并测试限制是否与数据一致。
例如,参见t_test
,它是为简单假设而矢量化的,并产生一个类似于回归总结中的汇总表。 http://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.RegressionResults.t_test.html有这个例子
>>> results = ols(formula, dta).fit()
>>> hypotheses = 'GNPDEFL = GNP, UNEMP = 2, YEAR/1829 = 1'
>>> t_test = results.t_test(hypotheses)
还有其他几种可用于假设检验的方法:
wald_test
是一个单一的联合假设。
wald_test_terms
测试每个术语是否所有参数都等于零(例如,对于分类回归量)和
t_test_pairwise
为分类回归量计算每对水平的t_test。
我的评论解释说:
以下是OLS结果的示例(数据是人为的):
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.161
Model: OLS Adj. R-squared: -0.007
Method: Least Squares F-statistic: 0.9608
Date: Mon, 08 Apr 2019 Prob (F-statistic): 0.372
Time: 11:14:10 Log-Likelihood: -10.854
No. Observations: 7 AIC: 25.71
Df Residuals: 5 BIC: 25.60
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 2.1429 1.141 1.879 0.119 -0.789 5.075
x1 0.2500 0.255 0.980 0.372 -0.406 0.906
==============================================================================
Omnibus: nan Durbin-Watson: 1.743
Prob(Omnibus): nan Jarque-Bera (JB): 0.482
Skew: 0.206 Prob(JB): 0.786
Kurtosis: 1.782 Cond. No. 10.4
==============================================================================
因此,对于参数x1,我们有系数0.25,STD为0.255。
p值为x1 = 1:
>>> from scipy.stats import norm
>>> 2*(1 - norm.cdf(abs(1-0.25), scale=0.255))
0.00326968201269362
p值对应于在零假设下观察a
的这个值的概率(通常为0,因为当协变量x
对结果y
没有影响时就是这种情况)。
这是在线性回归的假设下,其中包括a
遵循正态分布。因此,如果你真的想把你的零假设改为a=2
那么只需改变a
,这样a_ = a - 2
现在当a=2
,a_
将按照通常的假设为0。
因此,您可以通过求解y+2x = a_*x + b
来实现这一目标,并且您将获得a=2
偶然发生概率的p值。正如我所说,这是一个相当不寻常的测试......