我重写了这个问题,使其具有可重复性.假设我要发挥最大的功用exp(alpha+eta+gamma)为alpha,eta,gamma沿着自己选择的网格.我使用for循环完成了这个,但我想利用apply-functions来加速程序.这就是我所做的(eta和gamma在这里被固定).
eta=0.11
gamma=0.06
alpha=0.5
alpha_vals=seq(0.1,1,by=0.1)
eta_vals=eta
gamma_vals=gamma
ml_temp=-Inf
lapply(alpha_vals,function(alpha_v){
lapply(eta_vals,function(eta_v){
lapply(gamma_vals,function(gamma_v){
temp=exp(alpha_v+eta_v+gamma_v)
if (temp >= ml_temp) {
ml_temp=temp
mle_matrix=c(alpha_v,eta_v,gamma_v)
}
})
})
})
Run Code Online (Sandbox Code Playgroud)
输出mle_matrix我得到0 0 0,所以有些东西显然不起作用.任何帮助表示赞赏.
最简单的方法是使用expand.grid()和apply()
toTest <- expand.grid(
alpha = seq(0.1, 1, by = 0.1),
eta = seq(0.1, 1, by = 0.1),
gamma = seq(0.1, 1, by = 0.1))
ml <- apply(toTest, 1, function(x){
exp(sum(x))
})
toTest[which.max(ml), ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |