(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 中得到修复。