如何解释Python OLS Statsmodel的摘要表?

时间:2018-07-16 07:08:29

标签: python statistics statsmodels anova

我有一个连续的因变量y和一个独立的类别变量x,名为control_grid。 x包含两个变量:c和g

使用python包statsmodel,我试图查看自变量是否对y变量产生重大影响,例如:

model = smf.ols('y ~ c(x)', data=df)
results = model.fit()
table = sm.stats.anova_lm(results, typ=2)

打印表将其作为输出:

     OLS Regression Results                            
==============================================================================
Dep. Variable:          sedimentation   R-squared:                       0.167
Model:                            OLS   Adj. R-squared:                  0.165
Method:                 Least Squares   F-statistic:                     86.84
Date:                Fri, 13 Jul 2018   Prob (F-statistic):           5.99e-19
Time:                        16:15:51   Log-Likelihood:                -2019.2
No. Observations:                 436   AIC:                             4042.
Df Residuals:                     434   BIC:                             4050.
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
=====================================================================================
                        coef    std err          t      P>|t|      [0.025      0.975]
-------------------------------------------------------------------------------------
Intercept            -6.0243      1.734     -3.474      0.001      -9.433      -2.616
control_grid[T.g]    22.2504      2.388      9.319      0.000      17.558      26.943
==============================================================================
Omnibus:                       30.623   Durbin-Watson:                   1.064
Prob(Omnibus):                  0.000   Jarque-Bera (JB):               45.853
Skew:                          -0.510   Prob(JB):                     1.10e-10
Kurtosis:                       4.218   Cond. No.                         2.69
==============================================================================

在显示系数的表中,我不了解我的因变量的描述。

它说:

control_grid[T.g]

什么是“ T”? 并且它仅查看两个变量之一吗?只是在“ g”的作用下而不是在“ c”的作用?

如果您去here,您会发现在摘要中还显示了所有四个变量“ N”,“ S”,“ E”和“ W”的分类数据区域。

P.S。我的数据看起来像这样:

index         sedimentation control_grid
0             5.0            c
1            10.0            g
2             0.0            c
3           -10.0            c
4             0.0            g
5           -20.0            g
6            30.0            g
7            40.0            g
8           -10.0            c
9            45.0            g
10           45.0            g
11           10.0            c
12           10.0            g
13           10.0            c
14            6.0            g
15           10.0            c
16           29.0            c
17            3.0            g
18           23.0            c
19           34.0            g

1 个答案:

答案 0 :(得分:0)

我不是专家,但我会尽力解释。首先,您应该知道ANOVA是回归分析,因此您正在建立模型Y〜X,但在Anova X中则是类别变量。在您的情况下,Y =沉降,而X = control_grid(属于分类),因此模型为“沉降〜control_grid”。

Ols执行回归分析,因此它计算线性模型的参数:Y = Bo + B1X,但是,鉴于您的X是分类的,您的X是伪编码的,这意味着X只能是0或1,这是什么?与分类数据保持一致。请注意,在Anova中,估计的参数数量等于类别数量-1,您的数据中只有2个类别(g和c),因此ols报告中仅显示一个参数。 “ T.g”表示此参数对应于“ g”类别。那么您的模型为Y = Bo + T.g * X

现在,T.c的参数被视为Bo,所以实际上,您的模型是:

Y = T.c X + T.g X,其中X是O或1,具体取决于它是“ c”还是“ g”。

所以,你在问:

1)什么是“ T”? T(T.g)仅表示您估计和显示的参数对应于类别“ g”。

2)并且它仅查看两个变量之一吗? 不,分析估计了两个类别(c和g)的参数,但是截距Bo代表数据“ c”中该类别其他级别的系数。

3)仅在“ g”的作用下而不在“ c”的作用下? 不,实际上,分析着眼于“ g”和“ c”的影响。如果查看系数T.g和Intercept(T.c)的值,您会发现它们是否有意义(p值),并且可以说出它们是否对“沉降”有影响。

干杯