我正在尝试通过最小化平方和来优化指数模型,但是我无法弄清楚如何使用两个单独的标准进行优化。
我需要找到“a”和“b”的值,以最小化函数的输出。我在下面的代码中输入了估算值,但需要输出此代码来告诉我正方形的总和(已打印),以及正确优化模型时“a”和“b”的值。
c <- c(0.08, 0.17, 0.25, 0.33, 0.41, 0.49, 0.57, 0.65, 0.73, 0.81, 0.88, 0.96, 1.04, 1.11, 1.19, 1.26)
my_fun <- function(a, b, c){
predVar1 <- a * (1-exp(-c/b))
sum((predVar1 - c)^2)
}
a <- 9
b <- 1.4
my_fun(a, b, c)
由于
答案 0 :(得分:1)
根据我熟悉使用optim的方式进行了一些重新排列。另外,我将c
更改为d
,因为我不喜欢无意中覆盖c()
函数。
d <- c(0.08, 0.17, 0.25, 0.33, 0.41, 0.49, 0.57, 0.65, 0.73, 0.81, 0.88, 0.96, 1.04, 1.11, 1.19, 1.26)
my_fun <- function(parameters, d){
a <- parameters[1]
b <- parameters[2]
predVar1 <- a * (1-exp(-d/b))
return(sum((predVar1 - d)^2))
}
a <- 9
b <- 1.4
results <- optim(c(a, b), my_fun, d = d)
results$par
#[1] 700.8850 700.4793
results$value
#[1] 4.37461e-07