1

(patsy v0.4.1,python 3.5.0)

我想使用 patsy(最好是通过 statsmodels)来构建回归的设计矩阵。

我想拟合的 patsy 式公式是

response ~ 0 + category

其中 category 是一个两级分类变量。应该表明0 + ...我不想要隐式截距项。

我期望的设计矩阵有一个带有零和一的列,指示是否category具有基本级别 (0) 或其他级别 (1)。

以下代码:

import pandas as pd
import patsy

df = pd.DataFrame({'category': ['A', 'B'] * 3})

patsy.dmatrix('0 + category', data=df)

输出:

DesignMatrix with shape (6, 2)
  category[A]  category[B]
            1            0
            0            1
            1            0
            0            1
            1            0
            0            1
  Terms:
    'category' (columns 0:2)

这是单一的,而不是我想要的。

当我改为跑步时

import pandas as pd
import patsy

df = pd.DataFrame({'category': ['A', 'B'] * 3})

patsy.dmatrix('category', data=df)

输出是

DesignMatrix with shape (6, 2)
  Intercept  category[T.B]
          1              0
          1              1
          1              0
          1              1
          1              0
          1              1
  Terms:
    'Intercept' (column 0)
    'category' (column 1)

这对于包含截距的模型是正确的,但仍然不是我想要的。

没有拦截的输出是预期的行为吗?如果是这样,为什么?我只是对这个设计矩阵应该如何与标准编码一起工作感到困惑吗?

我知道我可以编辑设计矩阵以使我的回归按照我想要的方式工作,但如果这是一个错误,我希望看到它在 patsy 中得到修复。

4

0 回答 0