So thanks for the help,
I have a matrix (AB) which in the first column has my bin numbers so -4 - +4
in 0.1 bin units. Then I have in the second column the frequency from some
data. I have plotted them and they look roughly Gaussian. So I want to fit
them/ find/optimize "mu", "sigma", and "A".
So I call the nls function :
nls_AB <- nls(x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2*
sig^2))),data=temp, start= list(A=0.1, mu=0.01, sig=0.5), trace=TRUE)
Error in eval(expr, envir, enclos) : numeric 'envir' arg not of length
one
Temp looks like this:
bin x
[1,] -4.0 0
[2,] -3.9 0
[3,] -3.8 0
.........etc
[41,] 0.0 241
[42,] 0.1 229
[43,] 0.2 258
[44,] 0.3 305
[45,] 0.4 370
[46,] 0.5 388
So I don't get my error message. I looked at doing
class(fo <- (x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2* sig^2)))))
terms(fo)
and that seems to work. So if anyone has any ideas I would welcome them.
Cheers,
The data= argument cannot be a matrix. See ?nls On 5/22/06, H. Paul Benton <hpbenton at scripps.edu> wrote:> So thanks for the help, > > I have a matrix (AB) which in the first column has my bin numbers so -4 - +4 > in 0.1 bin units. Then I have in the second column the frequency from some > data. I have plotted them and they look roughly Gaussian. So I want to fit > them/ find/optimize "mu", "sigma", and "A". > > So I call the nls function : > > nls_AB <- nls(x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2* > sig^2))),data=temp, start= list(A=0.1, mu=0.01, sig=0.5), trace=TRUE) > Error in eval(expr, envir, enclos) : numeric 'envir' arg not of length one > > Temp looks like this: > bin x > [1,] -4.0 0 > [2,] -3.9 0 > [3,] -3.8 0 > .........etc > [41,] 0.0 241 > [42,] 0.1 229 > [43,] 0.2 258 > [44,] 0.3 305 > [45,] 0.4 370 > [46,] 0.5 388 > > So I don't get my error message. I looked at doing > class(fo <- (x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2* sig^2))))) > terms(fo) > > and that seems to work. So if anyone has any ideas I would welcome them. > > Cheers, > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html >
>From ?nlsdata: an optional data frame in which to evaluate the variables in 'formula'.>From the printout of 'Temp' it appears 'Temp' is a matrix. Assuming'temp' is the same as 'Temp', it is not a data frame as required, and the message is consistent with feeding eval() a numeric matrix where a data frame is expected. On Mon, 22 May 2006, H. Paul Benton wrote:> So thanks for the help, > > I have a matrix (AB) which in the first column has my bin numbers so -4 - +4 > in 0.1 bin units. Then I have in the second column the frequency from some > data. I have plotted them and they look roughly Gaussian. So I want to fit > them/ find/optimize "mu", "sigma", and "A". > > So I call the nls function : > > nls_AB <- nls(x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2* > sig^2))),data=temp, start= list(A=0.1, mu=0.01, sig=0.5), trace=TRUE) > Error in eval(expr, envir, enclos) : numeric 'envir' arg not of length one > > Temp looks like this: > bin x > [1,] -4.0 0 > [2,] -3.9 0 > [3,] -3.8 0 > .........etc > [41,] 0.0 241 > [42,] 0.1 229 > [43,] 0.2 258 > [44,] 0.3 305 > [45,] 0.4 370 > [46,] 0.5 388 > > So I don't get my error message. I looked at doing > class(fo <- (x ~ (A/sig*sqrt(2*pi))* exp(-1*((x-mu)^2/(2* sig^2))))) > terms(fo) > > and that seems to work. So if anyone has any ideas I would welcome them.-- 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