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函数的任何其他方式?
谢谢。
答案 0 :(得分:-1)
您可以尝试某种并行化,我看到有Parallel软件包吗?但是没有任何个人经验。 https://www.rdocumentation.org/packages/parallel/versions/3.6.2 https://dept.stat.lsa.umich.edu/~jerrick/courses/stat701/notes/parallel.html