Проблемы с созданием условий взаимодействия

У меня есть data.frame с 7000 строк и 36 столбцов. Некоторые столбцы являются категориальными переменными. Теперь я хочу создать матрицу x для регрессии, используя model.matrix. В этой матрице должны быть условия взаимодействия, такие как (V1 * V2 * V3). Я пытался сделать это так:

formelhas <- formula(k ~ .^3)
 test <-  model.matrix(formelhas,testahah)

Тестаха — это фрейм данных.

В результате теста есть только условия взаимодействия, такие как (V1 * V2), нет условий взаимодействия третьего порядка (V1 * V2 * V3). Почему?


person Dima Ku    schedule 02.07.2018    source источник


Ответы (1)


Без дополнительной информации от вас о структурах данных будет сложно ответить на этот вопрос.

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

Нет взаимодействий:

> str(colnames(model.matrix(mpg ~ ., mtcars)))
 chr [1:11] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb"

Двустороннее взаимодействие:

> str(colnames(model.matrix(mpg ~ .^2, mtcars)))
 chr [1:56] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb" "cyl:disp" ...

Трехстороннее взаимодействие:

> str(colnames(model.matrix(mpg ~ .^3, mtcars)))
 chr [1:176] "(Intercept)" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear" "carb" "cyl:disp" ...

Они на самом деле там?

> tail(colnames(model.matrix(mpg ~ .^3, mtcars)))
[1] "qsec:am:carb"   "qsec:gear:carb" "vs:am:gear"     "vs:am:carb"     "vs:gear:carb"   "am:gear:carb"

Да, да, они есть. Итак, ваш код должен работать. Может быть, вы просто что-то не так понимаете?

person Thomas    schedule 02.07.2018