Re: [Q] Nonlinear Fitting in symbolic Integration ..?
- To: mathgroup at smc.vnet.net
- Subject: [mg82909] Re: [mg82842] [Q] Nonlinear Fitting in symbolic Integration ..?
- From: Darren Glosemeyer <darreng at wolfram.com>
- Date: Sat, 3 Nov 2007 03:22:56 -0500 (EST)
- References: <200711011012.FAA07488@smc.vnet.net>
hwoarang wrote: > Dear Mathgroup, > > I have experiment data and am trying to fit data to convoluted equation. > The equation contains UnitStep and symbolic Integrate function. > I think that these functions have some compolited problems according to searching > about related problems in archives. > But still, I have no idea whether the problem is in UnitStep, symbolic Integrate or NonlinearRegress.. -_-. > Does anybody out there have any ideas for this ? > Any help would be appreciated. > > I pasted math code. > > Sincerely, yours > Hwoarang. > > Math Code : > ----------------------------------------------------------------------------- > Remove["Global`*"]; > << "Statistics`NonlinearFit`" > k0 = 1; k1 =. ; k2 =. ; tau1 =. ; tau2 =. ; > response[t_, x_] := (UnitStep[t - x]*{k2*(1 - E^(-((t - x)/tau2))) + > (k1*(1 - E^(-((t - x)/tau1))))/E^((t - x)/tau2)})/E^(x^2/(2*0.1^2)) > convol[t_] = Integrate[(k0*response[t, x])/(2*Pi*0.1^0.5), {x, -1, 0}, > Assumptions -> {{t, k1, k2, tau1, tau2} ¡ô Reals && t > 0 && tau1 > 0 && > tau2 > 0 && k1 > 0 && k2 > 0}, GenerateConditions -> False] + > Integrate[(k0*response[t, x])/(2*Pi*0.1^0.5), {x, 0, 20}, > Assumptions -> {{t, k1, k2, tau1, tau2} ¡ô Reals && t > 0 && tau1 > 0 && > tau2 > 0 && k1 > 0 && k2 > 0}, GenerateConditions -> False] > dat = Import["Reflsmooth.txt", "Table"]; > ListPlot[dat]; > NonlinearRegress[dat, convol, t, {{k1, 0.4, 0.35, 0.45}, > {k2, 0.04, 0.035, 0.045}, {tau1, 0.35, 0.3, 0.4}, {tau2, 0.25, 0.2, 0.3}}, > ShowProgress -> True] > > -------------------------------------------------------------------------- > Jiwan Kim, Ph. D. Candidate, > Dept. of Physics and Center for Nanospinics of Spintronic Materials, > KAIST 373-1, Guseong-dong, Yuseong-gu, Daejeon, 305-701, Republic of Korea > Tel: +82-42-869-8163 > Cel: +82-16-870-7419 > Fax: +82-42-869-8162 > E-mail: hwoarang at kaist.ac.kr > > Without your data, I can't comment on exactly what you are seeing, but I can make a few comments on the code that might solve the problem. In the definition of response there is a set of curly brackets {} that should be parentheses (). In the symbolic integrals it would be better to use exact numbers instead of floating point numbers. In the NonlinearRegress call, convol should be convol[t] instead. An example with some simulated data is below. In[1]:= << "Statistics`NonlinearFit`" In[2]:= k0 = 1; In[3]:= response[t_, x_] := (UnitStep[t - x]*(k2*(1 - E^(-((t - x)/tau2))) + (k1*(1 - E^(-((t - x)/tau1))))/ E^((t - x)/tau2)))/E^(x^2/(2*(1/10)^2)) In[4]:= convol[t_] = Integrate[(k0*response[t, x])/(2*Pi*(1/10)^(1/2)), {x, -1, 0}, Assumptions -> {t > 0 && tau1 > 0 && tau2 > 0 && k1 > 0 && k2 > 0}, GenerateConditions -> False] + Integrate[(k0*response[t, x])/(2*Pi*(1/10)^(1/2)), {x, 0, 20}, Assumptions -> {t > 0 && tau1 > 0 && tau2 > 0 && k1 > 0 && k2 > 0}, GenerateConditions -> False]; In[5]:= dat = Table[ Flatten[{t, convol[t]*(1 + Random[Real, {-.005, .005}])}], {t, 0, 1, .01}] /. {k1 -> .41, k2 -> .37, tau1 -> .31, tau2 -> .28}; In[6]:= NonlinearRegress[dat, convol[t], t, {{k1, 0.4, 0.35, 0.45}, {k2, 0.04, 0.035, 0.045}, {tau1, 0.35, 0.3, 0.4}, {tau2, 0.25, 0.2, 0.3}}] Out[6]= {BestFitParameters -> > {k1 -> 0.416736, k2 -> 0.369518, tau1 -> 0.310294, tau2 -> 0.285446}, > ParameterCITable -> Estimate Asymptotic SE CI , k1 0.416736 0.0774913 {0.262937, 0.570535} k2 0.369518 0.00137785 {0.366783, 0.372252} tau1 0.310294 0.250587 {-0.187052, 0.807639} tau2 0.285446 0.180313 {-0.0724248, 0.643317} -8 > EstimatedVariance -> 1.1668 10 , > ANOVATable -> DF SumOfSq MeanSq , Model 4 0.170563 0.0426407 -6 -8 Error 97 1.13179 10 1.1668 10 Uncorrected Total 101 0.170564 Corrected Total 100 0.0110745 > AsymptoticCorrelationMatrix -> 1. 0.951971 0.99865 -0.997248, 0.951971 1. 0.96587 -0.970739 0.99865 0.96587 1. -0.999742 -0.997248 -0.970739 -0.999742 1. > FitCurvatureTable -> Curvature} Max Intrinsic 0.33271 Max Parameter-Effects 1132.36 95. % Confidence Region 0.636868 In several trials with different simulated data sets, I found that convergence is sometimes a problem. I think this is due, at least in part, to interdependency of the parameters in the model; note that the entries in the correlation matrix are all nearly 1 or -1. Darren Glosemeyer Wolfram Research
- References:
- [Q] Nonlinear Fitting in symbolic Integration ..?
- From: hwoarang <kjwan@kaist.ac.kr>
- [Q] Nonlinear Fitting in symbolic Integration ..?