在 caret 包中使用 train 函数时出现线性回归错误

error in linear regression while using the train function in caret package

我有一个名为 value 的数据集,它有四个变量(ER 是因变量)和 400 个观察值(删除 N/A 后)。我尝试将数据集划分为训练集和测试集,并使用 caret 包中的线性回归来训练模型。但我总是得到错误:

In lm.fit(x, y, offset = offset, singular.ok = singular.ok,  ... :
  extra argument ‘trcontrol’ is disregarded.

下面是我的代码:

ctrl_lm <- trainControl(method = "cv", number = 5, verboseIter = FALSE)
value_rm = na.omit(value)
set.seed(1)
datasplit <- createDataPartition(y = value_rm[[1]], p = 0.8, list = FALSE)
train.value <- value_rm[datasplit,]
test.value <- value_rm[-datasplit,]
lmCVFit <- train(ER~., data = train.value, method = "lm",
                   trcontrol = ctrl_lm, metric = "Rsquared")
predictedVal <- predict(lmCVFit, test.value)
modelvalues <- data.frame(obs = test.value$ER, pred = predictedVal)
lmcv.out = defaultSummary(modelvalues)

正确的语法是 trControl,而不是 trcontrol。试试这个:

library(caret)
set.seed(1)
n <- 100
value <- data.frame(ER=rnorm(n), X=matrix(rnorm(3*n),ncol=3))

ctrl_lm <- trainControl(method = "cv", number = 5, verboseIter = FALSE)
value_rm = na.omit(value)
set.seed(1)
datasplit <- createDataPartition(y = value_rm[[1]], p = 0.8, list = FALSE)
train.value <- value_rm[datasplit,]
test.value <- value_rm[-datasplit,]
lmCVFit <- train(ER~., data = train.value, method = "lm",
                   trControl = ctrl_lm, metric = "Rsquared")
predictedVal <- predict(lmCVFit, test.value)
modelvalues <- data.frame(obs = test.value$ER, pred = predictedVal)
( lmcv.out <- defaultSummary(modelvalues) )

#      RMSE  Rsquared       MAE 
# 1.2351006 0.1190862 1.0371477