【发布时间】:2019-06-12 05:58:40
【问题描述】:
有人知道这里的优化功能是怎么回事吗?鉴于我想要进行 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
为什么当我将间隔设置为具有下限并以上限失败时,优化会找到正确的答案??
【问题讨论】:
-
optimize 的文档说不能保证收敛到全局最小值,也许 (0,1e6) 是一个不幸的区间。
optimize()函数是为连续函数设计的,但pwr.2p2n.test似乎期待 n1 和 n2 的整数输入,我不确定它为非整数返回什么
标签: r optimization