Hi All. I've run into a problem with the plinear algorithm in nls that is confusing me. Assume the following reaction time data over 15 trials for a single unit. Trials are coded from 0-14 so that the intercept represents reaction time in the first trial. trl RT 0 1132.0 1 630.5 2 1371.5 3 704.0 4 488.5 5 575.5 6 613.0 7 824.5 8 509.0 9 791.0 10 492.5 11 515.5 12 467.0 13 556.5 14 456.0 Now fit a power function to this data using nls with the plinear algorithm>fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm "plinear", data=df.one)Yields the following error message.... "Error in numericDeriv(form[[3]], names(ind), env) : Missing value or an infinity produced when evaluating the model" Now, recode trial from 1-15 and run the same model.>fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm "plinear", data=df.one)Seems to work fine now... Nonlinear regression model model: RT ~ cbind(1, trl, trl^p) data: df.one p .lin1 .lin.trl .lin3 -0.2845 200.3230 -8.9467 904.7582 residual sum-of-squares: 555915 Number of iterations to convergence: 11 Any idea why having a zero for the first value of X causes this problem? Thanks in advance, Rick DeShon [[alternative HTML version deleted]]
recall that 0 ^{-.2} = 1/0^{.2}, and that dividing by 0 gives Inf. so when 0 is in trl, part of your model for RT is Inf:> trl <- 0:14 > p <- -.2 > cbind(1,trl, trl^p)trl [1,] 1 0 Inf [2,] 1 1 1.0000000 [3,] 1 2 0.8705506 [4,] 1 3 0.8027416 [5,] 1 4 0.7578583 [6,] 1 5 0.7247797 [7,] 1 6 0.6988271 [8,] 1 7 0.6776109 [9,] 1 8 0.6597540 [10,] 1 9 0.6443940 [11,] 1 10 0.6309573 [12,] 1 11 0.6190439 [13,] 1 12 0.6083643 [14,] 1 13 0.5987029 [15,] 1 14 0.5898946 On Tue, 6 May 2008, Rick DeShon wrote:> Hi All. > > I've run into a problem with the plinear algorithm in nls that is confusing > me. > > Assume the following reaction time data over 15 trials for a single unit. > Trials are coded from 0-14 so that the intercept represents reaction time in > the first trial. > > trl RT > 0 1132.0 > 1 630.5 > 2 1371.5 > 3 704.0 > 4 488.5 > 5 575.5 > 6 613.0 > 7 824.5 > 8 509.0 > 9 791.0 > 10 492.5 > 11 515.5 > 12 467.0 > 13 556.5 > 14 456.0 > > Now fit a power function to this data using nls with the plinear algorithm > >fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm > "plinear", data=df.one) > > Yields the following error message.... > "Error in numericDeriv(form[[3]], names(ind), env) : > Missing value or an infinity produced when evaluating the model" > > Now, recode trial from 1-15 and run the same model. > >fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm > "plinear", data=df.one) > > Seems to work fine now... > Nonlinear regression model > model: RT ~ cbind(1, trl, trl^p) > data: df.one > p .lin1 .lin.trl .lin3 > -0.2845 200.3230 -8.9467 904.7582 > residual sum-of-squares: 555915 > > Number of iterations to convergence: 11 > > Any idea why having a zero for the first value of X causes this problem? > > Thanks in advance, > > Rick DeShon > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >
0^(-0.2) = Inf, so you started with an infinite prediction for your first point and hence an infinite sum of squares. On Tue, 6 May 2008, Rick DeShon wrote:> Hi All. > > I've run into a problem with the plinear algorithm in nls that is confusing > me. > > Assume the following reaction time data over 15 trials for a single unit. > Trials are coded from 0-14 so that the intercept represents reaction time in > the first trial. > > trl RT > 0 1132.0 > 1 630.5 > 2 1371.5 > 3 704.0 > 4 488.5 > 5 575.5 > 6 613.0 > 7 824.5 > 8 509.0 > 9 791.0 > 10 492.5 > 11 515.5 > 12 467.0 > 13 556.5 > 14 456.0 > > Now fit a power function to this data using nls with the plinear algorithm >> fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm > "plinear", data=df.one) > > Yields the following error message.... > "Error in numericDeriv(form[[3]], names(ind), env) : > Missing value or an infinity produced when evaluating the model" > > Now, recode trial from 1-15 and run the same model. >> fit.pw <-nls(RT ~ cbind(1,trl, trl^p), start = c(p = -.2), algorithm > "plinear", data=df.one) > > Seems to work fine now... > Nonlinear regression model > model: RT ~ cbind(1, trl, trl^p) > data: df.one > p .lin1 .lin.trl .lin3 > -0.2845 200.3230 -8.9467 904.7582 > residual sum-of-squares: 555915 > > Number of iterations to convergence: 11 > > Any idea why having a zero for the first value of X causes this problem? > > Thanks in advance, > > Rick DeShon > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at 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. >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595