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

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

Например, если я хочу смоделировать y как функцию переменных-предикторов a, < em> b, c и d с двумя степенями взаимодействия, могу ли я разрешить b взаимодействовать только с c и d < / strong>, а НЕ a? Я понимаю, что есть «допустимый» вход в функции земли, но, насколько я понимаю, «допустимый» вход только указывает, разрешено ли взаимодействовать предиктору, а не конкретно, с какими другими предикторами он может взаимодействовать.

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


person Community    schedule 07.06.2015    source источник
comment
Использование взаимодействий только, а не их конструктивных терминов - плохая практика в модели линейной регрессии. Я не знаю о моделях MARS, но подозреваю, что это верно и в этом случае.   -  person usεr11852    schedule 07.06.2015


Ответы (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)
person Stephen Milborrow    schedule 12.06.2015