Test the datasets with and without CEC
# create dataset without silt
noCEC <- noSilt %>% dplyr::select(-cec)
#create training and test sets
set.seed(0731)
inTrain <- createDataPartition(noCEC$yield, p = 0.75, list = FALSE)
train.noCEC <- noCEC[inTrain,]
test.noCEC <- noCEC[-inTrain,]
# create model
noCEC.mod <- train(yield~., data = train.noCEC, method = "lm", trControl = train.control)
noCEC.pred <- predict(noCEC.mod, test.noCEC)
RMSE.noCEC <- round(sqrt(mean((noCEC.pred-test.noCEC$yield)^2)),3)
adj.rsquared.noCEC <- round((summary(noCEC.mod)$adj.r.squared),3)
rsquared.noCEC <- round((summary(noCEC.mod)$r.squared),3)
# create dataset without sand
noCEC2 <- noSand %>% dplyr::select(-cec)
#create training and test sets
set.seed(0731)
inTrain <- createDataPartition(noCEC2$yield, p = 0.75, list = FALSE)
train.noCEC2 <- noCEC2[inTrain,]
test.noCEC2 <- noCEC2[-inTrain,]
# create model
noCEC.mod2 <- train(yield~., data = train.noCEC2, method = "lm", trControl = train.control)
noCEC.pred2 <- predict(noCEC.mod2, test.noCEC2)
RMSE.noCEC2 <- round(sqrt(mean((noCEC.pred2-test.noCEC2$yield)^2)),3)
adj.rsquared.noCEC2 <- round((summary(noCEC.mod2)$adj.r.squared),3)
rsquared.noCEC2 <- round((summary(noCEC.mod2)$r.squared),3)
models <- add_row(models, Model = c("No CEC/No Silt", "No CEC/No sand"), RMSE = c(RMSE.noCEC, RMSE.noCEC2),
Rsquared = c(rsquared.noCEC, rsquared.noCEC2), adj.Rsquared = c(adj.rsquared.noCEC, adj.rsquared.noCEC2))
models <- models %>%
arrange(RMSE)
model_display <- models %>%
gt()%>%
tab_header(
title = "Model comparisons") %>%
cols_label(adj.Rsquared = html("Adj. R<sup>2</sup>"),
Rsquared = html("R<sup>2</sup>"))
model_display
| Model |
RMSE |
R2 |
Adj. R2 |
| Full Model |
0.524 |
0.780 |
0.778 |
| No CEC/No sand |
0.563 |
0.756 |
0.754 |
| No Sand |
0.564 |
0.756 |
0.754 |
| No Silt |
0.571 |
0.749 |
0.747 |
| No CEC/No Silt |
0.571 |
0.749 |
0.747 |