Форсировать специфические взаимодействия в пакете "земля" в 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)