Hi,
I am trying to fit a function of the form:
y = A0 + A1 * exp( -0.5* ( (X - Mu1) / Sigma1 )^2 ) - A2 * exp ( -0.5*
( (X-Mu2)/Sigma2 )^2 )
i.e. a mean term (A0) + a difference between two gaussians.
The constraints are A1,A2 >0, Sigma1,Sigma2>0, and usually Sigma2>Sigma1.
The plot looks like a "Mexican Hat".
I had trouble (poor fits) fitting this function to toy data in Matlab and
now I am playing with R's nls and optim functions. I keep running into
singular gradient errors with nls, even with very different starting
values, and have not yet figured out how to interpret the trace results
usefully.
Can someone help ? Is there a correct parameterization for this problem ?
I have appended some R code with sample data to fit.
Thank you !!!
Suresh; please cc [EMAIL PROTECTED] if possible.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
x=seq(-10,10,length=1000)
a0=0;
ae=1;
me=0;
se=1;
ai=0.5;
mi=0;
si=3;
dogy <- function(x,a0,ae,me,se,ai,mi,si){
y=a0+ae*exp(-0.5*(((x-me)/se)^2))-ai*exp(-0.5*(((x-mi)/si)^2))
y}
y=dogy(x,a0,ae,me,se,ai,mi,si)
erval=rnorm(length(y),sd=0.02)
y=y+erval
#plot(x,y+erval)
#fit=nls(y~ae*exp((x/se)^2)-ai*exp((x/si)^2),start=c(ae=.8,se=1.1,ai=.2,si=1),trace=TRUE)
#here I tried to unsuccesfully reduce the model by eliminating A0, Mu1,
and Mu2
______________________________________________
[email protected] 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.