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