如何检查OLS中参数的p值

How to check the p values of parameters in OLS

当 运行 线性回归时,如 y=a*x+b,摘要给我参数是否为零的 p 值,如果我想查看 p 值怎么办参数 a 是否等于 2 或不同于零的值?

我希望 OLS 摘要能给出 a 是否不同于 2 的 p 值。

我的评论解释:

这里是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。

x1=1 的 p 值:

>>> 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=2a_ 将为 0,因为按照通常的假设。

因此,您可以通过求解 y+2x = a_*x + b 来实现这一点,并且您将获得 a=2 偶然发生的概率的 p 值。正如我所说,虽然这是一个相当不寻常的测试......

结果类 有假设检验的方法。其中大部分是基于Wald检验,即我们估计完整的模型并检验一个约束是否与数据一致。

http://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.RegressionResults.html

参见示例 t_test,它针对简单假设进行矢量化,并生成类似于回归摘要中的摘要 table。 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。