python patsy: кодирование взвешенного эффекта или кодирование взвешенной суммы (отклонения) - PullRequest
0 голосов
/ 14 июня 2019

Я использую python для выполнения линейной регрессии с категориальными предикторами (независимыми переменными), включая взаимодействия между категориальными предикторами. В частности, я хочу использовать кодирование с взвешенным эффектом (a.k.a кодирование с взвешенной суммой или кодирование с взвешенным отклонением) для получения правильных фиктивных переменных и матрицы проектирования.

Кодирование с взвешенным эффектом - это взвешенная версия кодирования суммы (отклонения) Пэтси, которая нормализует фиктивные переменные таким образом, что пересечение является средним значением выборки, в отличие от среднего значения по группе. Взвешенное кодирование эффектов с взаимодействиями описано в этой статье Te Grotenhuis et. al.:

http://rdcu.be/l6fo (DOI 10.1007 / s00038-016-0902-0)

и реализовано в R с помощью пакета wec.R, предоставленного авторами. Как видно из таблицы 3 статьи, в этой схеме код для членов взаимодействия составляет , а не , а является просто произведением закодированных основных эффектов.

Чтобы быть конкретным, с простым ванильным кодированием суммы, взаимодействие между двумя категориальными переменными (например, возраст и уровень образования) было бы обработано как обычно с помощью patsy:

dmatrix («C (возраст, сумма) * C (образование, сумма)», data = my_data)

К сожалению, даже если я напишу пользовательский класс контраста weighted_Sum (), который дает правильный результат для закодированного основного эффекта C (age, weighted_Sum), у меня все еще есть проблема, заключающаяся в том, что простой продукт

"C (возраст, взвешенная_сумма) * C (образование, взвешенная_сумма)"

не даст правильное кодирование для взаимодействий (см. Таблицу 3 статьи).

Будем весьма благодарны за любые предложения о том, как справиться с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...