Statsmodel 在逻辑回归中跳过一个值?

Statsmodel skips a value in a logistic regression?

我用 scikit_learn 构建了一个 多项式回归 ,它运行良好。 然后我尝试将相同的数据与 statsmodel 一起使用,因为它提供了更多的洞察力,而且它似乎跳过了第一个 y 值。关于我可能做错了什么的任何想法?

我有 6 个变量 in_X 和 7 个可能的结果 in_y(从 y=1 到 y=7),但是 statsmodel returns 只有 6 个系数。

当我打印 print(result.summary()) 时,日志从 y=2

开始

这是数据形状:

in_y.value_counts()
>>>
3    295
4    154
5    125
2     86
6     28
1      5
7      3
Name: y, dtype: int64

in_X.head()
>>>
    ENTERPRISE_VALUE_   SALES_GROWTH_   EBIT_TO_INT_EXP_    NET_DEBT_TO_EBITDA_ RETURN_COM_EQY_ CASH_RATIO_
918 4.0 4.0 4.0 4.0 5.0 4.0
344 6.0 3.0 4.0 4.0 4.0 6.0
348 5.0 3.0 3.0 5.0 3.0 6.0
906 4.0 5.0 4.0 4.0 4.0 4.0
80  3.0 4.0 4.0 4.0 4.0 4.0

(696, 6)

代码:

import pandas as pd
import statsmodels.discrete.discrete_model as sm

    logit_model = sm.MNLogit(in_y, in_X)
    result = logit_model.fit()

    # Results analysis
    print(result.summary())
    out1 = result.params

out1

0   1   2   3   4   5
ENTERPRISE_VALUE_   -0.228684   -1.274831   -2.546053   -3.440249   -3.602911   -3.822631
SALES_GROWTH_   0.553498    0.706551    1.399920    1.675287    1.646694    1.152329
EBIT_TO_INT_EXP_    -0.036777   -0.304586   -0.895444   -1.351096   -1.614823   -0.593286
NET_DEBT_TO_EBITDA_ 0.772482    1.690700    2.106280    2.881484    3.524116    4.281756
RETURN_COM_EQY_ -0.053659   0.269994    0.487565    0.653377    0.228949    -1.413008
CASH_RATIO_ -0.035479   0.399930    0.808460    0.722607    0.263178    -0.502091

结果汇总:

Logit Regression Results                          
==============================================================================
Dep. Variable:                      y   No. Observations:                  696
Model:                        MNLogit   Df Residuals:                      660
Method:                           MLE   Df Model:                           30
Date:                Mon, 01 Oct 2018   Pseudo R-squ.:                  0.2390
Time:                        12:09:15   Log-Likelihood:                -769.38
converged:                       True   LL-Null:                       -1011.0
                                        LLR p-value:                 3.400e-83
=======================================================================================
                y=2       coef    std err          z      P>|z|      [0.025      0.975]
---------------------------------------------------------------------------------------
[...]

由于概率必须加到 1 的限制,我们需要删除其中一个类别作为参考类别。因此给定其他参数,参考类别的概率只是一个减去一些非参考概率。

这与 Logit 模型相同,我们只能估计一组参数,例如对于成功的概率,第二个二元选择的概率,例如失败的概率就是一减去成功的概率。

在这两种情况下,响应变量的预测将是二元或多项式概率,需要满足概率限制,即介于零和一之间并加一的值。