Новая функция автозапуска - PullRequest
0 голосов
/ 21 мая 2018

Я слежу за Пинейро и Бейтсом 2000 с.345.Я хочу, чтобы соответствовать модели NLS, и изменил битт логистической модели.Я хочу создать функцию автозапуска, но появляется ошибка.Когда я запускаю «logist3P», появляется ошибка «параметр« scal »в формуле модели».Я думаю, что проблема в том, что я поставил формулу для параметра «scal».Как я могу поставить формулу для «масштабирования» и избежать ошибки?

logistin3P <- function(mCall, LHS, data)
{
  xy <- sortedXyData(mCall[["x"]], LHS, data)
  if(nrow(xy)<3) {stop("Too few distinct input values to fit a logistic")}
  Asym <- max(abs(xy[,"y"]))
  if(Asym !=max(xy[,"y"])) Asym <- -Asym #negative asymptote
  xmid <- NLSstClosestX(xy, 0.5 * Asym)
  scal <- (((log(Asym)+log(Asym*0.75))/ log(Asym*0.75))/((xmid*1.5)-xmid))         
  value <- c(Asym, xmid, scal)
  names(value) <- mCall[c("Asym","xmid","scal")]
  value
}

logist3P <- selfStart(~Asym/(1+exp(- scal(x-xmid))), initial = logistin3P, parameters = c("Asym","xmid","scal"))

1 Ответ

0 голосов
/ 19 сентября 2018

Я полагаю, что вам не хватает * после scal в аргументе модели:

logist3P <- selfStart(~Asym/(1+exp(- scal*(x-xmid))), initial = logistin3P, parameters = c("Asym","xmid","scal"))
...