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