Как ускорить на l oop в R? - PullRequest
       22

Как ускорить на l oop в R?

0 голосов
/ 25 апреля 2020
rm(list=ls())
library(gld)
library(GLDEX)

find_likelihood = function(x){
  fit = fit.fkml(x,"ML",return.data=TRUE)
  params = fit$optim.results$par
  dens = dgl(x, c(params), param = "fmkl", inverse.eps = 1e-08, max.iterations = 500)
  dens[dens < 1e-12] = 1e-12
  value = -sum(log(dens))
  return(value)
}

loglik_com = NULL
min_value = NULL

  for(j in 1: 1000){
    x = rgl(100,c(2, 1, 1, 1), param="fkml")
    for (i in 2:(100 - 2)) {
      a = x[1:i]
      b = x[(i + 1):100]
      loglik_com[i] = find_likelihood(a) + find_likelihood(b)
    }
    min_value[j] = min(na.omit(loglik_com))
  }

min_value

В моей вышеупомянутой функции R у меня 1000 итераций, но для получения результатов требуется почти 7 часов. У меня вопрос, могу ли я использовать функцию apply () для ускорения результатов? Или каким-либо другим способом, который я могу использовать для ускорения моей функции r?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 апреля 2020

Вы можете попробовать что-то вроде распараллеливания, я вижу, есть пакет Parallel? Однако личного опыта не было. https://www.rdocumentation.org/packages/parallel/versions/3.6.2 https://dept.stat.lsa.umich.edu/~jerrick/courses/stat701/notes/parallel.html

...