Добавьте все взаимодействия между категориальными переменными в лассо в R

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

Я использую as.formula для включения всех взаимодействий. Мой код ниже

f = as.formula(y ~ .^8)
x = model.matrix(f, data)[, -1]
y = data$y

Однако мой x становится следующим введите здесь описание изображения

Всего 6560 столбцов. Я понятия не имею, почему это становится таким. Разве не должно быть 1, 2, 3 в x переменных? Могу я спросить, как мне это исправить или интерпретировать?

Благодарю вас!


person JWRebecca    schedule 08.03.2020    source источник


Ответы (1)


У вас есть восемь переменных, каждая из которых имеет три уровня. Вы хотите включить все возможные взаимодействия, то есть все возможные комбинации восьми факторов.

Существует 3^8 различных возможных комбинаций значений для ваших предикторов. Таким образом, в вашей матрице дизайна есть 3 ^ 8 = 6561 возможных основных эффектов и взаимодействий (включая перехват).

Чтобы увидеть, как они кодируются, рассмотрим один трехуровневый предиктор:

> model.matrix(lm(y ~ x1))
  (Intercept) x12 x13
1           1   0   0
2           1   1   0
3           1   0   1

Один 3-уровневый фактор кодируется как 3 столбца, точка пересечения плюс две фиктивные переменные.

Теперь добавьте второй 3-уровневый предиктор и их взаимодействие:

> model.matrix(lm(y ~ (x1+x2)^2))
  (Intercept) x12 x13 x22 x23 x12:x22 x13:x22 x12:x23 x13:x23
1           1   0   0   0   1       0       0       0       0
2           1   1   0   1   0       1       0       0       0
3           1   0   1   0   0       0       0       0       0

Итак, здесь есть 9 допустимых комбинаций этих бинарных переменных. Когда вы получаете до 8 переменных, каждая из ваших 6561 возможных комбинаций предикторов представлена ​​допустимыми комбинациями этих бинарных переменных. (очевидно, вы не можете одновременно иметь положительные значения x12 и x13).

person George Savva    schedule 08.03.2020
comment
Большое спасибо! Это имеет смысл для меня! - person JWRebecca; 11.03.2020