Я пытаюсь найти параметры, используя пакет 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")
В настоящее время выдается ошибка
Ошибка: объект типа 'замыкание' не может быть подмножеством
Я нашел эту ошибку здесь , однако, когда я присваиваю значения b
и d
, это работает:
a()*x/(b+x)
Полагаю, проблема в том, что я пытаюсь найти b
и d
, используя функции, которые уже имеют их внутри?
Каков наилучший способ сделать это? Это вообще возможно или мне нужно определить всю сложную формулу в пределах nls2
?