Re: Re: Asking NonlinearRegression
- To: mathgroup at smc.vnet.net
- Subject: [mg88817] Re: [mg88781] Re: Asking NonlinearRegression
- From: "Thomas Dowling" <thomasgdowling at gmail.com>
- Date: Sat, 17 May 2008 05:31:34 -0400 (EDT)
- References: <g0h4kd$la4$1@smc.vnet.net> <200805160933.FAA01135@smc.vnet.net>
Hello,
I should have added to my previous post that the following is an example of
a function that gives a reasonable fit, but perhaps it is not acceptable?
fun2 = base + max/(1 + E^((xo - x)/r));
A fit may be obtained as follows:
In[479]= rules2 = FindFit[Partition[d1, 2],
fun2 , {{base, .2}, {max, 1}, {xo, 50}, {r, 8}}, x]
Out[479]= {base -> -0.00839687, max -> 1.14459, xo -> 81.5014, r -> 10.5337}
Plotting ....
In[489]= plot2 = Plot[fun2 /. rules2, {x, 0, 105}];
In[487]= listplot =
ListPlot[Partition[d1, 2], PlotRange -> {-.05, 1.1},
PlotStyle -> {Green, PointSize[Large]}];
In[490]= Show[plot2, listplot]
Tom Dowling
On Fri, May 16, 2008 at 4:18 PM, Thomas Dowling <thomasgdowling at gmail.com>
wrote:
> Hello,
>
> Are you sure about this?
>
> Proceeding as you outlined ...
>
> In[375]:= d1 = {1, 0.00, 2, 0.00, 3, 0.00, 4, 0.00, 5, 0.00, 6, 0.00, 7,
> 0.00,
> 8, 0.00, 9, 0.00, 10, 0.00, 11, 0.00, 12, 0.00, 13, 0.00, 14, 0.00,
> 15, 0.00, 16, 0.00, 17, 0.00, 18, 0.00, 19, 0.00, 20, 0.00, 21,
> 0.00, 22, 0.00, 23, 0.00, 24, 0.00, 25, 0.00, 26, 0.00, 27, 0.00,
> 28, 0.00, 29, 0.00, 30, 0.00, 31, 0.00, 32, 0.00, 33, 0.00, 34,
> 0.00, 35, 0.00, 36, 0.00, 37, 0.00, 38, 0.00, 39, 0.00, 40, 0.00,
> 42, 0.00, 44, 0.00, 46, 0.00, 48, 0.00, 50, 0.00, 52, 0.04, 54,
> 0.06, 56, 0.08, 58, 0.09, 60, 0.16, 65, 0.24, 70, 0.32, 75, 0.43,
> 80, 0.49, 85, 0.58, 90, 0.80, 95, 0.91, 100, 1.00, 105, 1};
>
> In[376]:= fun = Exp[(1 - Exp[a*(1 - Exp[-b*x])])*(Exp[-b*x])/(1 -
> Exp[-b*x])];
>
> In[412]:= paramrules = FindFit[d1, fun, {a, b}, x]
>
> Out[412]= {a -> 0.648266, b -> 1.02124}
>
> If I now plot the (partitioned) data and the fitted function, as follows:
>
> In[419]= plot = Plot[fun /. paramrules, {x, 0, 105}, AxesOrigin -> {0,
> 0}];
> listplot = ListPlot[Partition[d1, 2], PlotRange -> {-.05, 1.1
> }, PlotStyle -> {Green, PointSize[Large]}];
> Show[plot, listplot]
>
> This does not seem to be a reasonable fit to me.
>
> Furthermore, the following gives an overflow error message. Are you sure
> you
> are trying to fit to an appropriate function?
>
>
> In[422]= FindFit[Partition[d1, 2], fun, {a, b}, x]
>
>
> IGeneral::ovfl: Overflow occurred in computation. >>
>
> General::ovfl: Overflow occurred in computation. >>
>
> General::ovfl: Overflow occurred in computation. >>
>
> General::stop: Further output of General::ovfl will be suppressed \
> during this calculation. >>
>
> FindFit::nrlnum: The function value <<1>> is not a list of real \
> numbers with dimensions {59} at {a,b} = {-1.80801,-5.23877}.
>
> Out[422]= {a -> -1.80801, b -> -5.23877}
>
> I have not been able to obtain a reasonable fit to your data even using
> 'manual' values for 'a' and 'b' in 'fun'. Maybe fit to
> a different function?
>
> Tom Dowling
>
> On Fri, May 16, 2008 at 10:33 AM, dh <dh at metrohm.ch> wrote:
>
>>
>>
>> Hi Navri,
>>
>> NonlinearRegression as well as FindFit (should be used instead of the
>>
>> older NonlinearFit) seem to work as expected:
>>
>> fun=Exp[(1-Exp[a*(1-Exp[-b*x])])*(Exp[-b*x])/(1-Exp[-b*x])];
>>
>>
>> d1={1,0.00,2,0.00,3,0.00,4,0.00,5,0.00,6,0.00,7,0.00,8,0.00,9,0.00,10,0.00,11,0.00,12,0.00,13,0.00,14,0.00,15,0.00,16,0.00,17,0.00,18,0.00,19,0.00,20,0.00,21,0.00,22,0.00,23,0.00,24,0.00,25,0.00,26,0.00,27,0.00,28,0.00,29,0.00,30,0.00,31,0.00,32,0.00,33,0.00,34,0.00,35,0.00,36,0.00,37,0.00,38,0.00,39,0.00,40,0.00,42,0.00,44,0.00,46,0.00,48,0.00,50,0.00,52,0.04,54,0.06,56,0.08,58,0.09,60,0.16,65,0.24,70,0.32,75,0.43,80,0.49,85,0.58,90,0.80,95,0.91,100,1.00,105,1};
>>
>> FindFit[d1,fun,{a,b},x]
>>
>> NonlinearRegress[d1, fun, {a, b}, x]
>>
>> Could it bee that you had a syntax error?
>>
>> hope this helps, Daniel
>>
>>
>>
>>
>>
>> Navri Navri Bintang wrote:
>>
>> > Hi,
>>
>> >
>>
>> > I have a problem with nonlinear regression in Mathematica. I want to fit
>> my data (below) to this following equation:
>>
>> >
>>
>> > y = Exp[(1-Exp[a*(1-Exp[-b*x])])*(Exp[-b*x])/(1-Exp[-b*x])]
>>
>> >
>>
>> > and I would like to find a and b values and also determined r-squared
>> value.
>>
>> >
>>
>> > I try to use NonlinearRegression/NonlinearFit code, but its not working,
>> I hope someone could help me
>>
>> >
>>
>> > Thanks a lot
>>
>> >
>>
>> > DATA:
>>
>> > x y
>>
>> > 1 0.00
>>
>> > 2 0.00
>>
>> > 3 0.00
>>
>> > 4 0.00
>>
>> > 5 0.00
>>
>> > 6 0.00
>>
>> > 7 0.00
>>
>> > 8 0.00
>>
>> > 9 0.00
>>
>> > 10 0.00
>>
>> > 11 0.00
>>
>> > 12 0.00
>>
>> > 13 0.00
>>
>> > 14 0.00
>>
>> > 15 0.00
>>
>> > 16 0.00
>>
>> > 17 0.00
>>
>> > 18 0.00
>>
>> > 19 0.00
>>
>> > 20 0.00
>>
>> > 21 0.00
>>
>> > 22 0.00
>>
>> > 23 0.00
>>
>> > 24 0.00
>>
>> > 25 0.00
>>
>> > 26 0.00
>>
>> > 27 0.00
>>
>> > 28 0.00
>>
>> > 29 0.00
>>
>> > 30 0.00
>>
>> > 31 0.00
>>
>> > 32 0.00
>>
>> > 33 0.00
>>
>> > 34 0.00
>>
>> > 35 0.00
>>
>> > 36 0.00
>>
>> > 37 0.00
>>
>> > 38 0.00
>>
>> > 39 0.00
>>
>> > 40 0.00
>>
>> > 42 0.00
>>
>> > 44 0.00
>>
>> > 46 0.00
>>
>> > 48 0.00
>>
>> > 50 0.00
>>
>> > 52 0.04
>>
>> > 54 0.06
>>
>> > 56 0.08
>>
>> > 58 0.09
>>
>> > 60 0.16
>>
>> > 65 0.24
>>
>> > 70 0.32
>>
>> > 75 0.43
>>
>> > 80 0.49
>>
>> > 85 0.58
>>
>> > 90 0.80
>>
>> > 95 0.91
>>
>> > 100 1.00
>>
>> > 105 1
>>
>> >
>>
>> >
>>
>> > Rgds,
>>
>> > Navri
>>
>> >
>>
>> >
>>
>> >
>>
>> >
>>
>> >
>>
>>
>>
>>
>
- References:
- Re: Asking NonlinearRegression
- From: dh <dh@metrohm.ch>
- Re: Asking NonlinearRegression