Проблемы создания условий взаимодействия - PullRequest
0 голосов
/ 02 июля 2018

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

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

Testaha - это фрейм данных.

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

1 Ответ

0 голосов
/ 02 июля 2018

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

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

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

> 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"

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

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