I'm trying to use R caret to perform cross-validation of my linear regression models. In some cases I want to force the intercept through 0. I have tried the following, using the standard lm syntax:
regressControl <- trainControl(method="repeatedcv",
number = 4,
repeats = 5
)
regress <- train(y ~ 0 + x,
data = myData,
method = "lm",
trControl = regressControl)
Call:
lm(formula = .outcome ~ ., data = dat)
Coefficients:
(Intercept) x
-0.0009585 0.0033794 `
This syntax seems to work with the standard 'lm' function but not within the caret package. Any suggestions?
test <- lm(y ~ 0 + x,
data = myData)
Call:
lm(formula = y ~ 0 + x, data = myData)
Coefficients:
x
0.003079
You can take advantage of the
tuneGrid
parameter incaret::train
.Use
getModelInfo("lm", regex = TRUE)[[1]]$param
to see all the things you could have tweaked intuneGrid
(in the lm case, the only tuning parameter is the intercept). It's silly that you can't simply rely onformula
syntax, but alas.