R 在两个函数上优化运行时

R 在两个函数上优化运行时,r,performance,runtime,R,Performance,Runtime,我对R还是新手,我已经编写了两个运行时间很长的函数。我试着尽可能地优化,但没能节省很多时间 我想做的是做一个函数来估计两个参数,这样函数kvasum就最小化了。我怀疑我的问题出在臀部的环上。我有相当多的观察,并希望运行不同的参数 # Generate Data x <- runif(1000) vpk <- data.frame(x); names(vpk) <-'V1' n <- 20000000 # This function takes the mean squa

我对R还是新手,我已经编写了两个运行时间很长的函数。我试着尽可能地优化,但没能节省很多时间

我想做的是做一个函数来估计两个参数,这样函数
kvasum
就最小化了。我怀疑我的问题出在臀部的环上。我有相当多的观察,并希望运行不同的参数

# Generate Data
x <- runif(1000)
vpk <- data.frame(x);
names(vpk) <-'V1'
n <- 20000000

# This function takes the mean squared errors of the vpk vector and the convergence rate 
#The function therefore returns a value
#The NA's have been omitted here

kvasum = function(par){
  q <- (log(vpk$V1) / log(1 / n) - (-1+(par[1]+1/par[2])) )
  q <- q[!is.na(q)]
  ((10 - 0) / 1000) * sum(q^2)
}


#The function optim has been used to find alpha and beta such that kvasum is minimized. 
#To be sure it is a global minumum, different starting parameters has been tried using a for loop. 
#The starting values, the value of the function and the parameter estimates has been saved in a vector r 
r <- matrix(ncol = 5, nrow = 10000000)
t = 1
for(a in seq(from = 0.01, to = 5,by = 0.01)){
  for(b in seq(from = 0.01, to = 1.99, by = 0.01)){
    h <- optim(par = c(a, b), kvasum, method = 'L-BFGS-B', lower = c(0.0000001, 0.0000001), upper=c(5, 1.999999))
    t <- 1+t
    r[t,] <- c(a, b, h$value, h$par)
  }
}
#生成数据

如果我的数学计算正确,这是一个微不足道的优化。你基本上是在优化与
和成比例的东西(向量^2-2(Beta(Alpha+1)+(Alpha+1)^2)/Beta^2)
全局最小值在
c(0,1)
实际上没有必要循环所有的起始条件来检查你的解是否是全局最小值。我简化了kvasum中的表达式,因为我正在复制一篇尚未发表的文章。