(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。