【发布时间】:2018-10-17 18:38:39
【问题描述】:
我正在尝试使用 nls2 包查找参数。由于我尝试为其优化参数的公式非常复杂,因此我尝试使用我在使用nls2 命令优化的公式中调用的函数:
library(nls2)
set.seed(20160227)
x <- seq(0,50,1)
y <- ((runif(1,10,20)*x)/(runif(1,0,10)+x))+rnorm(51,0,1)
a <- function(){
d+1
}
f1 <- function(){
y <- a()*x/(b+x)
}
st <- data.frame(d = c(-100,100),
b = c(-100,100))
nls2(f1,start = st, algorithm = "brute-force")
目前,这会引发错误
错误:“闭包”类型的对象不是子集
我发现了这个错误 here,但是当我将值分配给 b 和 d 时,这有效:
a()*x/(b+x)
我认为问题是我尝试使用已经包含在其中的函数来查找 b 和 d?
最好的方法是什么?甚至有可能还是我需要在nls2 中定义整个复杂公式?
【问题讨论】:
标签: r nls nested-function