使用optimr查找断点

使用optimr查找断点,r,optimization,non-linear-regression,R,Optimization,Non Linear Regression,我正在尝试将已知函数拟合到数据点,找到最佳参数设置。为此,我使用了optimr包 下面是一个可复制的示例: packages = c("optimr", "ggplot2", "tidyverse") lapply(packages, library, character.only=T) testfun <- function(par, x){ case_when( x < par[1] ~ par[2]*x, x >= par[1] ~ par[3] + par[

我正在尝试将已知函数拟合到数据点,找到最佳参数设置。为此,我使用了
optimr

下面是一个可复制的示例:

packages = c("optimr", "ggplot2", "tidyverse")
lapply(packages, library, character.only=T)

testfun <- function(par, x){
 case_when(
  x < par[1] ~ par[2]*x,
  x >= par[1] ~ par[3] + par[4]*x^2)
}

optfun <- function(par, x, y){
 sum((testfun(par, x) - y)^2)
}

optout <- optimr(par = c(20000,0,0,0), optfun, x = ggplot2::midwest$popdensity, y = ggplot2::midwest$poptotal, method = "L-BFGS-B")

ggplot(ggplot2::midwest, aes(x = popdensity, y = poptotal)) + 
 geom_point() +
 stat_function(fun = testfun, args = list(par = optout$par))
packages=c(“optimr”、“ggplot2”、“tidyverse”)
lappy(包、库、字符.only=T)
测试乐趣=标准杆[1]~标准杆[3]+标准杆[4]*x^2)
}

optfun分段函数,尤其是带有扁平部分的分段函数,会给优化人员带来麻烦。如果函数值在某个步长上没有改变,并且可能搜索的距离不够远,无法达到该步长,则优化人员通常会放弃使用某个参数


optimr
中查找可能扩大搜索空间的其他参数

谢谢!我检查并摆弄
optimr(…,controls=list(parscale=c(1200,…))
已经得到了更好的结果。但是,这意味着我需要手动校准它?