如何检查OLS中参数的p值

问题描述 投票:0回答:3

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

我期望OLS摘要给出a是否与2不同的p值。

python statsmodels
3个回答
2
投票

结果类具有假设检验的方法。其中大多数是基于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。


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。

p值为x1 = 1:

>>> from scipy.stats import norm
>>> 2*(1 - norm.cdf(abs(1-0.25), scale=0.255))                                                                                          
0.00326968201269362

0
投票

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

这是在线性回归的假设下,其中包括a遵循正态分布。因此,如果你真的想把你的零假设改为a=2那么只需改变a,这样a_ = a - 2现在当a=2a_将按照通常的假设为0。

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

© www.soinside.com 2019 - 2024. All rights reserved.