0
Я оцениваю условные предельные плотности и оцениваю их при новых наблюдениях. Затем я ввожу оценки в массив. Этот код медленный, и я не смог значительно ускорить его. Буду признателен за любую оказанную помощь. Вот небольшой воспроизводимый пример:Замена двойного цикла для увеличения скорости
library(sm)
y <- rep(1:6, 30)
K <- length(unique(y))
X <- matrix(rnorm(180 * 1000), nrow=180)
newx <- matrix(rnorm(20 * 1000), nrow=20)
f.estimates <- array(dim=c(dim(newx)[1], dim(X)[2], K - 1))
g.estimates <- array(dim=c(dim(newx)[1], dim(X)[2], K - 1))
for(k in 1:(K - 1)) {
for(j in 1:dim(X)[2]) {
f.estimates[, j, k] <- sm.density(X[y <= k, j],
eval.points=newx[, j],
display="none")$estimate
g.estimates[, j, k] <- sm.density(X[y > k, j],
eval.points=newx[, j],
display="none")$estimate
}
}
Вы можете заменить внутренний цикл двумя функциями 'sapply'. Это может иметь небольшое увеличение производительности порядка 0,2. Посмотрите, вам, возможно, придется транспонировать полученные матрицы. – lmo
Ваша проблема также может быть выполнена параллельно. Вот хорошая ссылка для начала. Посмотрите на 'foreach'. Вот хороший ресурс http://www.r-bloggers.com/how-to-go-parallel-in-r-basics-tips/. –