Caret: спецификация семьи в glmboost не работает - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь запустить усиленную регрессию на Карете (с семьей Хубер), однако при обучении модели получаю ошибку:

library(caret)

X <- rnorm(300, 0, 100)
Y <- rnorm(300, 0, 100000)
data <- cbind(X,Y)

model <- train(Y~X, method="glmboost", data=data, family=Huber())

Я получаю сообщение об ошибке «не удалось найти функцию Huber ()», однако она явно включена в пакет mboost (тот, на котором основан glmboost).

Любая помощь будет очень признательна.

1 Ответ

1 голос
/ 10 апреля 2019

Если вы просто запустите library(caret) с method="glmboost", он загрузит пакет mboost, но не прикрепит пакет mboost к вашему пути поиска.Пакетам не рекомендуется автоматически подключать другие пакеты, поскольку они могут импортировать функции, которые могут конфликтовать с другими загруженными вами функциями.Таким образом, большинство пакетов загружают зависимости конфиденциально.Если вы полностью квалифицируете имя функции как имя пакета, то вы можете использовать его в своей модели

model <- train(Y~X, method="glmboost", data=data, family=mboost::Huber())

Или вы можете просто запустить library(mboost), чтобы прикрепить пакет к пути поиска, чтобы вы ненеобходимо включить префикс имени пакета.

...