# # A self-started function for the model # # f(x) = a +(b-a)(1 - exp(-c x)) # oneMinusExpModel = function(predictor, a, b, c){ a + (b-a)*(1 - exp(-c*predictor)) } oneMinusExpModelInit = function(mCall, LHS, data){ xy = sortedXyData(mCall[['predictor']], LHS, data) a0 = min(xy$y)* 0.9 b0 = max(xy$y)* 1.1 Y = log(1 -(xy$y - a0)/(b0 - a0)) X = xy$x lmFit = lm(Y ~ X - 1) coefs = as.double(coef(lmFit)) c0 = -coefs[1] value = c(a0, b0, c0) names(value)= mCall[c('a','b','c')] value } SSoneMinusExp = selfStart(oneMinusExpModel, oneMinusExpModelInit, c('a', 'b', 'c'))