极大似然估计 bbmle和DEoptim 并行计算

 

1、bbmle

(1)bbmle使用

library(bbmle)

###在参数范围内,随机生成3个[0,1]范围内的数据

x=runif(3,0,1)

estimates = mle2(LogL,start=list(len1=x[1],x2=x[2],x3=x[3),method = "BFGS")

###保存数据结果

 dd<-summary(estimates)

final<-dd@coef

(2)使用parallel包进行并行计算

library(parallel)

cl <- makeCluster(n) ###其中n为调用的核数

###其中func代表调用的函数,并且在func<-function(j){XXX},j的数据会进行1:1000次循环

results<-parLapply(cl,1:1000,func)

res_df<-do.call('rbind',results)

 

注:在使用bbmle的过程当中,得到的结果容易造成局部最优解,所以一般在求解过程当中,在区间范围内随机产生初始值进行多次操作,以此来获得最优解。

 

除此之外,我们可以使用演化算法进行求解。

2、DEoptim

library(DEoptim)

###parVar代表调用函数过程中所需要的函数名称以及使用的全局变量数据

parVar = c("LogL","data_fun","list_ID","subj","blocks","trials","check")

###其中parallelType==1,使用并行计算

###下行代码中有5个参数,并且对其设置区间

estimates = DEoptim(LogL,lower =c(0,0,0,0,0),upper=c(1,1,1,1,20),control = DEoptim.control(trace = FALSE,NP = 100,itermax = 500,parallelType=1,parVar=parVar))

####保存相应的参数结果

dd1<-summary(estimates)

final[1]<-dd1$optim$bestmem[1]

final[2]<-dd1$optim$bestmem[2]

final[3]<-dd1$optim$bestmem[3]

final[4]<-dd1$optim$bestmem[4]

final[5]<-dd1$optim$bestmem[5]

final[6]<-dd1$optim$bestval

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值