如何检查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=2
,a_
将为 0,因为按照通常的假设。
因此,您可以通过求解 y+2x = a_*x + b
来实现这一点,并且您将获得 a=2
偶然发生的概率的 p 值。正如我所说,虽然这是一个相当不寻常的测试......
结果类 有假设检验的方法。其中大部分是基于Wald检验,即我们估计完整的模型并检验一个约束是否与数据一致。
参见示例 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。
当 运行 线性回归时,如 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=2
,a_
将为 0,因为按照通常的假设。
因此,您可以通过求解 y+2x = a_*x + b
来实现这一点,并且您将获得 a=2
偶然发生的概率的 p 值。正如我所说,虽然这是一个相当不寻常的测试......
结果类 有假设检验的方法。其中大部分是基于Wald检验,即我们估计完整的模型并检验一个约束是否与数据一致。
参见示例 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。