给定 R 中的期望答案,如何找到函数参数的最佳值?

How to find the most optimum value for a function argument given a desired answer in R?

我想知道如何找到 t 的最精确值,因为我希望下面整个函数调用的答案成为 R 中的 3

if(!require(BayesFactor)){install.packages('BayesFactor')} ; library(BayesFactor)

# 3 = function call below:
unname(ttest.tstat( t, 20, 20, rscale = sqrt(2)/2, simple = TRUE)[[1]])

这是一个使用 optim 的解决方案。 par 是让你最接近 3 的 t 值。其他方法可能会让你更接近,但这在我的驾驶室之外。

library(BayesFactor)

f1 <- function(t){
  abs(ttest.tstat( t, 20, 20, rscale = sqrt(2)/2, simple = TRUE)[[1]]-3)
}

f2 <- function(t){
  ttest.tstat( t, 20, 20, rscale = sqrt(2)/2, simple = TRUE)[[1]]
}

optim(par=-1, fn = f1)

#$par
#[1] -2.440637
#
#$value
#[1] 1.140988e-07
#
#$counts
#function gradient 
#      56       NA 
#
#$convergence
#[1] 0
# 
#$message
#NULL

编辑:

其他两种优化值的方法 t 考虑到 Nelder-Mead 对于一维优化不可靠的警告。该警告仅表示有 are/is 更好的方法来优化单变量函数。

optim(par=-1, fn = f1, method="Brent", lower = -100, upper=100)
optimize(f1, interval = c(-100,100))