【问题标题】:Can my optimization take a small vector for one of its arguments in R?我的优化可以为它在 R 中的一个参数使用一个小向量吗?
【发布时间】:2017-07-21 02:47:13
【问题描述】:

我在下面做了一个小优化。我想知道我的f 函数和optimize() 中的参数“alpha”是否有可能接受向量c(.025, .975) 而不是只取一个值(现在,@ 987654325@)?

N = 10 ; df = N-1 ; d = 1.356617

f <- function (ncp, alpha, q, df) {
       abs(suppressWarnings(pt(q = d*sqrt(N), df = df, ncp, lower.tail = FALSE)) - alpha)
  }

optimize(f, interval = c(-20, 20), alpha = .025, q = d*sqrt(N), df = df, tol = 1e-10)[[1]]

【问题讨论】:

    标签: r function optimization vectorization


    【解决方案1】:

    optimize 包裹在sapply 中可以解决这个例子

    sapply(c(0.025, 0.975),
           function(x) optimize(f, interval = c(-20, 20), alpha = x,
                                q = d*sqrt(N), df = df, tol = 1e-10)[[1]])
    [1] 1.467169 6.997613
    

    在这里,您只需遍历每个所需的 alpha 值并应用optimize

    【讨论】:

    • 如果我正确理解了您的问题,并且 sqrt(N) 是一个标量(长度为 1 的数字向量),如上例所示。然后把整个东西除以sqrt(N),比如sapply(...) / sqrt(N)
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2021-10-25
    • 2017-02-01
    • 2011-03-01
    • 1970-01-01
    • 2020-07-07
    • 2020-05-16
    相关资源
    最近更新 更多