Hi Everyone, I'd omitted the non-optional 'parameters' argument to selfStart. Making this change to SSbatch gives the same (successful) result from the two calls to nls. SSbatch<-selfStart( model=function(Batch, Coeffs) { Coeffs[Batch] } ,initial=function(mCall, data, LHS) { # Estimate coefficients as mean of each batch xy <- sortedXyData(mCall[["Batch"]], LHS, data) Batch <- data[[as.character(mCall[["Batch"]])]] # check Batch is successive integers starting at 1 if ((min(xy$x) !=1) | (any(diff(xy$x)!=1))) stop( "Batch is not a successive integers sequence") Lval <- list(xy$y) names(Lval) <- mCall["Coeffs"] Lval } , parameters = c("Coeffs") ) Sorry for wasting anyones time. Keith Jewell ------------------------------------------------- "Keith Jewell" <k.jewell at campden.co.uk> wrote in message news:...> Hi everyone, > > I thought that for a selfStart function, these two should be exactly > equivalent >> nls(Aform, DF) >> nls(Aform, DF, start=getInitial(Aform, DF)) > but in this example that is not the case in R (although it is in S-plus > V6.2) > ------------------------------ > SSbatch<-selfStart( > model=function(Batch, Coeffs) > { > Coeffs[Batch] > > } > ,initial=function(mCall, data, LHS) > { > # Estimate coefficients as mean of each batch > xy <- sortedXyData(mCall[["Batch"]], LHS, data) > Batch <- data[[as.character(mCall[["Batch"]])]] > # check Batch is successive integers starting at 1 > if ((min(xy$x) !=1) | (any(diff(xy$x)!=1))) stop( > "Batch is not a successive integers sequence") > Lval <- list(xy$y) > names(Lval) <- mCall["Coeffs"] > Lval > } > ) > DF <- data.frame(A=c(0.9, 1.1, 1.9, 2.0, 2.1, 2.9, 3.0), > Batch=c(1,1,2,2,2,3,3)) > Aform <- formula(A~SSbatch(Batch,cA)) > nls(Aform, DF, start=getInitial(Aform, DF)) > nls(Aform, DF) > ------------------------------------ > Don't ask why I'd want such a silly selfStart, that's a long story. > I guess wherever I would have used nls(Aform, DF) > I could use nls(Aform, DF, start=getInitial(Aform, DF)) > but that seems clumsy. > > Can anyone point out my mistake? Or is this a limitation of nls in R (I > hesitate to use the b*g word). > > Thanks in advance, > > Keith Jewell > ---------------------------------- > > I don't think it's relevant but, for completeness: > >> sessionInfo() > > version 2.7.0 (2008-04-22) > i386-pc-mingw32 > > locale: > LC_COLLATE=English_United Kingdom.1252;LC_CTYPE=English_United > Kingdom.1252;LC_MONETARY=English_United > Kingdom.1252;LC_NUMERIC=C;LC_TIME=English_United Kingdom.1252 > > attached base packages: > [1] stats graphics grDevices datasets tcltk utils methods > base > > other attached packages: > [1] xlsReadWrite_1.3.2 svSocket_0.9-5 svIO_0.9-5 R2HTML_1.58 > svMisc_0.9-5 svIDE_0.9-5 > > loaded via a namespace (and not attached): > [1] tools_2.7.0 VGAM_0.7-7 > -------------------------------- > >