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