<Python + Patsy> Почему имя фиктивных переменных с / без T? - PullRequest
0 голосов
/ 05 января 2019

Используя patsy, я заметил, что он иногда именовал фиктивные переменные с T и без T в других случаях. И сегодня я понял, что T присоединяется, когда постоянный член присутствует в уравнении регрессии, а не T без постоянного члена. Например, сравните z[T.1], z[0], z[1], обозначенное OUTPUT в следующем коде.

import pandas as pd
import patsy

data = {'z': ['1', '0', '0'],
        'y': [150, 200, 50],
        'x': [200, 210, 90]}
df = pd.DataFrame(data)

# with constant -----------------------
form_const = 'y ~ x + z'
y_const, X_const = patsy.dmatrices(form_const, df, return_type='dataframe')
print(X_const.columns.tolist())

# ['Intercept', 'z[T.1]', 'x'] <- OUTPUT

# withOUT constant --------------------
form_no_const = 'y ~ -1 + x + z'
y_no_const, X_no_const = patsy.dmatrices(form_no_const, df, return_type='dataframe')
print(X_no_const.columns.tolist())

# ['z[0]', 'z[1]', 'x'] <- OUTPUT

Вопросы

Какова роль T? Это просто указывает на наличие постоянного члена? Если так, разве это не избыточно, учитывая, что мы всегда можем видеть наличие / отсутствие постоянного члена? Есть ли другие роли?

Ваше понимание ценится заранее.

1 Ответ

0 голосов
/ 06 января 2019

Существует множество различных способов кодирования категориальных переменных в регрессии. Они дают одни и те же прогнозы, но фактические бета-коэффициенты отличаются, и если вы хотите интерпретировать бета-версии или провести проверку гипотез на них, вам необходимо знать, какое кодирование использовалось.

Пэтси использует имена как подсказку о том, какая система кодирования используется. Когда есть буква «Т», это «кодирование лечения», а бета-коэффициенты говорят вам, как отклик для данной категории отличается от от некоторой базовой категории. Когда нет буквы «T», бета-коэффициенты - это не различия, а просто прогноз для этой категории.

Причина, по которой patsy иногда использует одну, а иногда и другую, заключается в том, что она автоматически пытается найти кодировку полного ранга, где все бета-версии имеют уникальные и понятные значения. (Другой вариант - это «переопределенная» модель, где существует бесконечно много бета-версий, дающих одинаковые прогнозы, и вам необходимо добавить дополнительные произвольные ограничения, чтобы соответствовать модели.) Если в вашей модели есть термин «перехват», то это обеспечивает одна степень свободы, чтобы начать, и когда patsy идет, чтобы добавить категориальную переменную, он обнаруживает это и использует (n-1) -мерное кодирование, такое как кодирование обработки, и вы получаете "T". Если нет термина перехвата, тогда он использует n-мерную кодировку, и вы не получите «T».

Patsy также позволяет вам выбирать различные схемы кодирования или даже определять свою собственную: https://patsy.readthedocs.io/en/latest/API-reference.html#handling-categorical-data

Для получения дополнительной информации о схемах кодирования в целом, смотрите:

...