Является ли это ожидаемым поведением "патси" при построении матрицы проектирования двухуровневой категориальной переменной без перехвата?

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

что верно для модели, которая включает в себя перехват, но все же не то, что я хочу.

Является ли вывод без перехвата предполагаемого поведения? Если так, то почему? Меня просто смущает, как эта матрица дизайна должна работать со стандартным кодированием?

Я знаю, что могу отредактировать матрицу дизайна, чтобы заставить мою регрессию работать так, как я намереваюсь, но если это ошибка, я бы хотел, чтобы она исправлялась в трусах.

0 ответов

Другие вопросы по тегам