Является ли это ожидаемым поведением "патси" при построении матрицы проектирования двухуровневой категориальной переменной без перехвата?
(patsy v0.4.1, python 3.5.0)
Я хотел бы использовать patsy (в идеале через statsmodels) для построения матрицы дизайна для регрессии.
Формула в стиле "трусливый", которую я хотел бы подогнать,
response ~ 0 + 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)
что верно для модели, которая включает в себя перехват, но все же не то, что я хочу.
Является ли вывод без перехвата предполагаемого поведения? Если так, то почему? Меня просто смущает, как эта матрица дизайна должна работать со стандартным кодированием?
Я знаю, что могу отредактировать матрицу дизайна, чтобы заставить мою регрессию работать так, как я намереваюсь, но если это ошибка, я бы хотел, чтобы она исправлялась в трусах.