binomial <- function(nmax = 100,
thr = 0.95,
alpha = 1,
beta = 1,
p_true = 0.5,
p_0 = 0.5){
for(j in seq.int(nmax, 0)){
if(pbeta(q = p_0, shape1 = alpha + j, shape2 = beta + nmax - j, lower.tail = FALSE) < thr){
targetatnmax <- j + 1
} else {
print(
break
}
}
result <- list(Success = Success, targeratnmax = targetatnmax)
return(result)
}
res = binomial(nmax,thr,alpha,beta,p_true,p_0)
res在我的程序中,我试图找到超过0.95thr所需的成功次数。我尝试在if else语句中使用for循环,但是当我运行它时,我得不到所需的值。我知道我的价值应该是59,但我似乎不能得到这个。我知道代码看起来真的很混乱,但这只是因为我已经玩了几个小时了。请帮帮忙
发布于 2013-06-25 20:18:51
以下是清理后的代码:
binomial <- function(nmax = 100,
thr = 0.95,
alpha = 1,
beta = 1,
p_true = 0.5,
p_0 = 0.5){
targetatnmax <- 0
for(j in seq.int(0,nmax)){
if(pbeta(q = p_0, shape1 = alpha + j, shape2 = beta + nmax - j, lower.tail = FALSE) < thr){
targetatnmax <- j + 1
} else {
break
}
}
result <- list(targeratnmax = targetatnmax)
return(result)
}
res = binomial()
res
#$targeratnmax
#[1] 59主要问题(除了语法错误和不存在的对象)是您的循环从nmax运行到0,而不是从另一个方向运行。
可能有优化的潜力,但我对统计数据的理解还不够好,无法真正解决这个问题。
https://stackoverflow.com/questions/17296840
复制相似问题