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

______________________________________________
R-help@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
and provide commented, minimal, self-contained, reproducible code.

Reply via email to