有人知道这里的优化函数是怎么回事吗?我试图找到最小样本大小,因为我想做90/10的控制/测试拆分,以达到80的幂。
library(pwr)
# Proportions
p1 <- .09*1.2
p2 <- .09
Cohen.h = ES.h(p1, p2)
getNRatio <- function(n, p=.8){
n1 <- n * .9
n2 <- n * .1
power <- pwr.2p2n.test(h = Cohen.h, n1 = n1, n2 = n2, sig.level = .05, power = NULL, alternative='greater')$power
return((p - power)^2)
}
> optimize(getNRatio, interval=c(0, 1e6), maximum=FALSE, p=.8)
$minimum
[1] 1e+06
$objective
[1] 0.04
> optimize(getNRatio, interval=c(0, 1e5), maximum=FALSE, p=.8)
$minimum
[1] 18875.37
$objective
[1] 6.907866e-20为什么当我将区间设置为下限时,优化找到了正确的答案,而当区间设置为上限时,优化失败了?
发布于 2019-06-12 05:58:40
所以我认为这与使用梯度下降的方法有关。整个间隔的曲线图将生成以下结果:

因此,如果我们使用简单的二进制搜索方法,并从中间开始,那么在这一点上的梯度将是平坦的,并且对找到最小值没有任何帮助。然而,对于较小的间隔,第一次猜测实际上可能有一个有用的梯度,指向全局最小值。
https://stackoverflow.com/questions/56452683
复制相似问题