【发布时间】:2021-10-25 22:09:18
【问题描述】:
我试图在函数bayesmeta::qhalfnormal 中找到scale 的单个值,这样向量low_high <- c(.1, 1) 的第一个和第二个元素分别具有.025 和.975 在其中发生的概率.
换句话说,对于scale 的值,.1 可以有.025 和1 可以有.975 概率。
所以,我有一个参数 (scale) 需要优化,并期望它有一个值。我在下面使用optim,但是这样,我得到scale 的两个值。
有没有更好的优化函数来给我一个scale 的值?
library(bayesmeta)
low_high <- c(.1, 1)
alpha <- c(.025, .975)
f <- function(x) {
low_high - qhalfnormal(alpha, scale = x) }
optim(low_high, function(x)sum(f(x)^2))
# $par
> [1] 3.1939758 0.4461607 # I expect a single value for `scale`
# But it seems `optim()` has acted like `Vectorize(optimize)` looping over
# elements of `low_high` vector.
【问题讨论】:
-
我认为没有单一的尺度可以使等式成立。当然你可以找到一个大概的比例。原因是给定特定比例的半法线分位数确实发生了变化。即规模越小,任何给定概率的分位数越大。在您的情况下,一旦比例升至 0.4461 以上,则分位数的概率均低于 0.975,因此无法求解。简而言之,您的问题没有解决方案。简单地说,想想两条平行线,它们在哪里相交?这就是您要解决的问题
-
@Onyambu,这很有帮助,谢谢!
标签: r function math optimization statistics