【问题标题】:Optimize a custom function with several parameters in R在 R 中优化具有多个参数的自定义函数
【发布时间】:2020-06-10 22:41:08
【问题描述】:

我想用几个参数优化 R 中的自定义函数。我相当确定自定义函数正确地给出了平方和误差,但是当我尝试优化参数“k”和“lambda”时没有成功。最后,我希望 optim 函数测试许多不同的“lambda”和“k”值,并最终给我减少平方和误差的组合。任何建议将不胜感激。我是优化新手,所以欢迎任何指针。

# Actual data
x = seq(0,3.277,0.005)[1:500]
actual.ani = rnorm(1:500)

# Exponential function - returns sum of squares error
exp.f <- function(lambda, k) { 
  pred.ani = (k + exp((-lambda*x) + log10(100-k)))
  sse.tot = sum((actual.ani-pred.ani)^2)
  return(sse.tot)
}

# Run optimization
params = c(lambda=1, k=1)
optim(par=params, exp.f)

fn(par, ...) 中的错误:缺少参数“k”,没有默认值

谢谢!

【问题讨论】:

  • 你觉得下面给出的答案没有帮助吗?
  • @Suren,您的回答非常有帮助。谢谢

标签: r optimization


【解决方案1】:

如果您将函数定义如下(其中参数是向量),optim 会提供解决方案。

exp.f <- function(y) { 
  lambda <- y[1]
    k <- y[2]

  pred.ani = (k + exp((-lambda*x) + log10(100-k)))
  sse.tot = sum((actual.ani-pred.ani)^2)
  return(sse.tot)
}
optim(par=params, exp.f)
$par
[1] 564.75987560  -0.02335728
$value
[1] 499.9616
$counts
function gradient
     117       NA
$convergence
[1] 0
$message
NULL

【讨论】:

    猜你喜欢
    • 2013-04-08
    • 2021-07-29
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2023-03-15
    相关资源
    最近更新 更多