【问题标题】:Optimize Arrives at Wrong Answer when Interval Increased当间隔增加时优化到达错误的答案
【发布时间】: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


【解决方案1】:

所以我认为这与使用梯度下降的方法有关。整个区间的图会生成:

因此,如果我们使用一种简单的二分搜索方法并从中间开始,那么该点的梯度将是平坦的,并且对找到最小值没有任何帮助。然而,如果间隔更小,第一个猜测实际上可能有一个指向全局最小值的有用梯度。

【讨论】:

    猜你喜欢
    • 2020-02-12
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2019-08-10
    • 1970-01-01
    相关资源
    最近更新 更多