如何检查OLS中参数的p值

时间:2019-04-08 14:47:23

标签: python statsmodels

运行y=a*x+b之类的线性回归时,摘要为我提供了参数是否等于零的p值,如果我想查看参数{{1 }}等于2或不同于零的值?

我希望 OLS 摘要为我提供a是否不同于2的p值。

3 个答案:

答案 0 :(得分:1)

结果类具有用于假设检验的方法。其中大多数是基于Wald检验的,即我们估计完整模型并测试限制是否与数据一致。

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

例如参见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。

答案 1 :(得分:0)

我的评论解释如下:

以下是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

答案 2 :(得分:0)

p值对应于在原假设下观察a的值的概率(通常为0,因为当协变量x对变量无影响时就是这种情况)结果y)。

这是在线性回归的假设下得出的,其中除其他事项外,a遵循正态分布。因此,如果您真的想将原假设更改为a=2,则只需变换a使得a_ = a - 2现在a=2a_将为0按照通常的假设。

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