繁体   English   中英

Statsmodels - Wald检验线性回归模型(OLS)中系数趋势的显着性

[英]Statsmodels - Wald Test for significance of trend in coefficients in Linear Regression Model (OLS)

我使用Statsmodels生成OLS线性回归模型,以基于大约10个独立变量预测因变量。 自变量都是绝对的。

我有兴趣仔细研究其中一个自变量的系数的重要性。 共有4个类别,因此有3个系数 - 每个系数都非常重要。 我还想看看所有三个类别的趋势的重要性。 根据我的(有限)理解,这通常使用Wald测试并将所有系数比较为0来完成。

如何使用Statsmodels完成这项工作? 我看到有一个OLS功能的Wald测试方法。 使用此方法时,似乎必须传入所有系数的值。

我的方法如下......

首先,这里是所有系数:

np.array(lm.params) = array([ 0.21538725,  0.05675108,  0.05020252,  0.08112228,  0.00074715,
        0.03886747,  0.00981819,  0.19907263,  0.13962354,  0.0491201 ,
       -0.00531318,  0.00242845, -0.0097336 , -0.00143791, -0.01939182,
       -0.02676771,  0.01649944,  0.01240742, -0.00245309,  0.00757727,
        0.00655152, -0.02895381, -0.02027537,  0.02621716,  0.00783884,
        0.05065323,  0.04264466, -0.13068456, -0.15694931, -0.25518566,
       -0.0308599 , -0.00558183,  0.02990139,  0.02433505, -0.01582824,
       -0.00027538,  0.03170669,  0.01130944,  0.02631403])

我只对params 2-4感兴趣(这是3个感兴趣的系数)。

coeffs = np.zeros_like(lm.params)
coeffs = coeffs[1:4] = [0.05675108,  0.05020252,  0.08112228]

检查以确保这有效:

array([ 0.        ,  0.05675108,  0.05020252,  0.08112228,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ,  0.        ,
        0.        ,  0.        ,  0.        ,  0.        ])

看起来不错,现在要在测试中运行!

lm.wald_test(coeffs) = 
<class 'statsmodels.stats.contrast.ContrastResults'>
<F test: F=array([[ 13.11493673]]), p=0.000304699208434, df_denom=1248, df_num=1>

这是正确的方法吗? 我真的可以使用一些帮助!

线性假设具有R params = q的形式,其中R是定义参数的线性组合的矩阵,q是假设值。

在我们想要测试某些参数是否为零的简单情况下,R矩阵在列中对应于参数的位置为1,在其他地方为零,q为零,这是默认值。 每行指定参数的线性组合,其将假设定义为整体或联合假设的一部分。

在这种情况下,获得限制矩阵的最简单方法是使用单位矩阵的相应行

R = np.eye(len(results.params))[1:4]

然后, lm.wald_test(R)将提供3个参数为零的联合假设的检验。

指定限制的一种更简单的方法是使用参数的名称并通过字符串列表定义限制。

模型结果类还有一个新方法wald_test_terms ,它自动生成设计矩阵中的项的wald检验,其中假设包括几个参数或列,如分类解释变量或多项式解释变量的情况。 这在statsmodels master中可用,并将在即将发布的0.7版本中提供。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM