在插入符号包中使用train函数时的线性回归误差

时间:2017-12-27 15:20:11

标签: r cross-validation

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

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)

1 个答案:

答案 0 :(得分:2)

正确的sintax是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