Предположим, что мы указали N наборов данных о поездах (деление 80:20), и мы хотим получить список из двух элементов с pvalues и коэффициентами из модели glm для каждого набора данных о поездах. Код, воспроизводящий этот пример, выглядит следующим образом:
library(parallel)
library(caret)
# prepare dataset
data(iris)
iris <- iris[!iris$Species == "setosa", ]
# create validation folds
set.seed(12345)
folds <- createDataPartition(y = iris$Species, times = 100, p = 0.8, list = FALSE)
# glm model expression
model.expr.tr <- expression(glm(formula = Species ~ Sepal.Length,
data = dtr,
family = binomial(link = "logit")))
# glm elements that will be validated
val_part <- list(coefs = expression(summary(eval(model.expr.tr))$coefficients[, 1]),
pvals = expression(summary(eval(model.expr.tr))$coefficients[, 4]))
# lapply with mapply for validation results
val_results <- lapply(val_part, function(x){
mapply(function(i){
trindex <- rownames(iris) %in% folds[, i]
dtr <- iris[trindex, ]
eval(x)
},
i = 1:100)
})
Как вы знаете, самая длинная часть - это прохождение сводки модели по всем наборам данных поезда, особенно если мы выберем более 100 из них. По вашему мнению, есть ли способ ускорить этот процесс? Конечно, я знаю о параметрах parLapply / mcmapply, но как насчет ускорения Rcpp в этом случае? Есть предложения?
Спасибо.