Форсировать специфические взаимодействия в пакете "земля" в R

Я использую пакет 'earth' для построения модели многомерного адаптивного регрессионного сплайна. Используя функцию земли, есть ли способ разрешить взаимодействие ТОЛЬКО между определенными переменными предиктора?

Например, если я хочу моделировать y как функцию переменных-предикторов a, b, c и d с 2 степенями взаимодействия, могу ли я позволить b взаимодействовать только с c и d, а не a? Я признаю, что в функции земли есть "допустимый" вход, но, насколько я понимаю, "допустимый" вход определяет только то, разрешено ли предиктору взаимодействовать, а не конкретно, с какими другими предикторами он может взаимодействовать.

Обратите внимание, что я новичок в использовании моделей MARS и этого пакета R, поэтому любая помощь очень ценится. Спасибо!

1 ответ

Вот пример, который позволяет только указанные взаимодействия. Предикторам в PREDICTORS разрешено взаимодействовать с предикторами в PARENTS, и никакие другие взаимодействия не допускаются:

library(earth)
data(etitanic)

PREDICTORS <- c("age")
PARENTS    <- c("survived", "parch")

example5 <- function(degree, pred, parents, namesx)
{
    if (degree < 2)
        return(TRUE)
    predictor <- namesx[pred]
    parents   <- namesx[parents != 0]
    if((any(predictor %in% PREDICTORS) && any(parents %in% PARENTS)) ||
       (any(predictor %in% PARENTS)    && any(parents %in% PREDICTORS))) {
        return(TRUE)
    }
    FALSE
}
a5 <- earth(sex~., data=etitanic, degree=2, allowed=example5)
Другие вопросы по тегам