thank you, david and gabor. very much appreciated. I should have thought of setting the seed. this was only an example, of course. alas, such intermittent errors could still be of concern to me, because I need to simulate this nls() to find out its properties under the NULL, so I can't easily tolerate errors. fortunately, I had the window still open, so getting my y's out was easy, and the rounded figures produce the same nls error.
> cbind(x,round(y,3)) x y [1,] 1 5.017 [2,] 2 7.993 [3,] 3 11.014 [4,] 4 13.998 [5,] 5 17.003 [6,] 6 19.977 [7,] 7 23.011 [8,] 8 25.991 [9,] 9 29.003 [10,] 10 32.014 [11,] 11 31.995 [12,] 12 32.004 [13,] 13 32.012 [14,] 14 31.994 [15,] 15 31.998 [16,] 16 32.000 [17,] 17 32.009 [18,] 18 31.995 [19,] 19 32.000 [20,] 20 31.982 > r1= nls( y~ a+b*pmin(c,x), start=list(a=2, b=3, c=10), trace=TRUE ) 0.002138 : 2 3 10 0.002117 : 2.004 3.000 9.999 0.002113 : 2.006 2.999 10.001 0.002082 : 2.005 2.999 10.000 0.002077 : 2.005 2.999 10.000 0.002077 : 2.005 2.999 10.000 Error in nls(y ~ a + b * pmin(c, x), start = list(a = 2, b = 3, c = 10), : step factor 0.000488281 reduced below 'minFactor' of 0.000976562 I really don't care about this example, of course---only about learning how to avoid nls() from dying on me. so, any advice would be appreciated. regards, /iaw ---- Ivo Welch (ivo.we...@brown.edu, ivo.we...@gmail.com) On Tue, May 4, 2010 at 3:59 PM, David Winsemius <dwinsem...@comcast.net> wrote: > > On May 4, 2010, at 3:52 PM, ivo welch wrote: > >> thank you, david. indeed. works great (almost). an example for >> anyone else googling this in the future: >> >>> x=1:20 >>> y= 2+3*ifelse(x>10, 10, x)+rnorm(20,0,0.01) >>> r1= nls( y~ a+b*pmin(c,x), start=list(a=2, b=3, c=10), trace=TRUE ) >> >> 0.002142 : 2 3 10 >> 0.002115 : 2.004 3.000 10.000 >> 0.002114 : 2.006 2.999 10.001 >> 0.002084 : 2.005 2.999 10.000 >> ... >> 0.002079 : 2.005 2.999 10.000 >> Error in nls(y ~ a + b * pmin(c, x), start = list(a = 2, b = 3, c = 10), >> : >> step factor 0.000488281 reduced below 'minFactor' of 0.000976562 >> >> strange error, but unrelated to my question. will figure this one out >> next. > > I get no error. May be difficult to sort out unless you can reproduce after > setting a random seed. > >> x=1:20 >> y= 2+3*ifelse(x>10, 10, x)+rnorm(20,0,0.01) >> r1= nls( y~ a+b*pmin(c,x), start=list(a=2, b=3, c=10), trace=TRUE ) > 0.001560045 : 2 3 10 > 0.001161253 : 2.003824 2.998973 10.000388 > 0.001161253 : 2.003824 2.998973 10.000388 > > -- > David. > >> >> regards, >> >> /iaw >> >> >> On Tue, May 4, 2010 at 3:40 PM, David Winsemius <dwinsem...@comcast.net> >> wrote: >>> >>> On May 4, 2010, at 3:33 PM, ivo welch wrote: >>> >>>> Dear R experts---I would like to estimate a non-linear least squares >>>> expression that looks something like >>>> >>>> y ~ a+b*min(c,x) >>>> >>>> where a, b, and c are the three parameters. how do I define a min >>>> function in the formula language of R? advice appreciated. >>> >>> ?pmin >>> >>>> >>>> sincerely, >>>> >>>> /iaw >>>> >>>> ______________________________________________ >>>> R-help@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-help >>>> PLEASE do read the posting guide >>>> http://www.R-project.org/posting-guide.html >>>> and provide commented, minimal, self-contained, reproducible code. >>> >>> David Winsemius, MD >>> West Hartford, CT >>> >>> > > David Winsemius, MD > West Hartford, CT > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.