R 新的自启动功能

R 新的自启动功能,r,function,nlme,R,Function,Nlme,我关注皮涅罗和贝茨2000年第345页。我想适应nls模型,并修改了一点逻辑模型。我想创建一个自启动函数,但出现了一个错误。当我运行“logist3P”时,会显示错误“模型公式中未出现参数“scal”。我认为问题是因为我为“scal”参数设置了一个公式。我怎样才能用“scal”的公式来避免这个错误呢 logistin3P <- function(mCall, LHS, data) { xy <- sortedXyData(mCall[["x"]], LHS, data) if

我关注皮涅罗和贝茨2000年第345页。我想适应nls模型,并修改了一点逻辑模型。我想创建一个自启动函数,但出现了一个错误。当我运行“logist3P”时,会显示错误“模型公式中未出现参数“scal”。我认为问题是因为我为“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"))

logistin3P我相信您在model参数中的
scal
之后缺少了一个
*

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