[ADMB Users] The importance of parameterizing a nonlinear model well
Anders Nielsen
fishfollower at gmail.com
Tue Aug 20 00:04:13 PDT 2013
Hi Dave,
I agree completely.
The intention (from my side) was to show that this problem, which had been
reported too difficult for most other optimizers(!), was simple to solve in
ADMB. The reason for it being difficult was less important in this
exercise.
Point is that in larger problems we may not be able to find a
parametrization, which make them trivial, so it is nice to have an
optimizer which is stable enough to handle somewhat poor parametrizations.
Cheers,
Anders.
On Tue, Aug 20, 2013 at 1:48 AM, dave fournier <davef at otter-rsch.com> wrote:
> I came across the following simple 3 parameter logistics problem
> describing
> how difficult it was to fit a small "weeds" data set.
>
> https://groups.nceas.ucsb.edu/**non-linear-modeling/projects/**
> weeds/WRITEUP/weeds.pdf<https://groups.nceas.ucsb.edu/non-linear-modeling/projects/weeds/WRITEUP/weeds.pdf>
>
> there are 12 data points
>
> t weeds
> 1 5.308
> 2 7.24
> 3 9.638
> 4 12.866
> 5 17.069
> 6 23.192
> 7 31.443
> 8 38.558
> 9 50.156
> 10 62.948
> 11 75.995
> 12 91.972
>
> The model to be fit is
>
> y = b_1/(1+b_2*exp(-b_3*t))
>
> We are told several times how difficult this data set is to fit.
>
> In fact is is a trivial data set to fit as I shall show. The
> problem is that the parametrization used is a very poor one.
>
> Consider the parameter b_1. This is the number of weeds at t=infinity.
>
> It appears to be somewhat greater than 91, but how much? It is not really
> obvious.
> the parameter b_2 is even less intuitive.
>
> we shall replace b_1 and b_2 with two parameters whose value is almost
> obvious,
> namely the number of weeds at time t_1=1, and t_n=12. Call thes parameter
> y_1 and y_n.
>
> clearly y_1 is close to 5.308 and y_n is close to 91.9
>
> Given values for y_1, y_2, and b_3 it is a simple matter to solve for b_2
> and b_1.
>
> The code in the tpl file is
>
> b3=exp(logb3);
> dvariable gamma1=exp(-b3*t(1));
> dvariable gamman=exp(-b3*t(noObs));
> b2=(yn-y1)/(y1*gamma1-yn***gamman); // solve for b2
> b1=y1*(1.0+b2*gamma1); // solve for b1
>
> For both models the sum of squares is rss 2.58728
>
> Now lets make the data a bit more challenging. we change the 12'th data
> point to
> 110.
>
> For Ander's verion the sum of squares is rss 60.6799
>
> while for my version it is rss 55.8948
>
> Now change the 12'th data point to 125.
>
> For Ander's version the sum of squares is rss 237.054
> and for mine rss 133.582
>
> So maybe we should think more about how to parameterize these models.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Users mailing list
> Users at admb-project.org
> http://lists.admb-project.org/mailman/listinfo/users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.admb-project.org/pipermail/users/attachments/20130820/7a2793cf/attachment.html>
More information about the Users
mailing list