如何在R中给出所需答案的函数参数找到最佳值?

时间:2017-06-19 22:34:20

标签: r function math linear-algebra equation

我想知道如何找到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]])

1 个答案:

答案 0 :(得分:0)

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

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对于一维优化不可靠的警告。警告只是意味着有更好的方法来优化单变量函数。

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