我正试图在Caret上运行一个强大的稳健回归(与Huber家族一起),但是在训练模型时我遇到了错误:
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所基于的包)中。
任何帮助将非常感激。
如果您只使用library(caret)
运行method="glmboost"
,它将加载mboost
包,但它不会将mboost
包附加到您的搜索路径。不鼓励软件包自动附加其他软件包,因为它们可能导入可能与您加载的其他函数冲突的函数。因此,大多数软件包都私下加载依赖项。如果使用包名称完全限定函数名称,则可以在模型中使用它
model <- train(Y~X, method="glmboost", data=data, family=mboost::Huber())
或者您也可以运行library(mboost)
将包附加到搜索路径,这样您就不必包含包名称前缀。