Я использую 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 статьи).
Будем весьма благодарны за любые предложения о том, как справиться с этим.