<div dir="ltr">Hi Dave, <div><br></div><div>I agree completely. </div><div><br></div><div>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. </div>
<div><br></div><div>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. </div>
<div><br></div><div>Cheers, </div><div><br></div><div>Anders.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Aug 20, 2013 at 1:48 AM, dave fournier <span dir="ltr"><<a href="mailto:davef@otter-rsch.com" target="_blank">davef@otter-rsch.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I came across the following simple 3 parameter logistics problem describing<br>
how difficult it was to fit a small "weeds" data set.<br>
<br>
<a href="https://groups.nceas.ucsb.edu/non-linear-modeling/projects/weeds/WRITEUP/weeds.pdf" target="_blank">https://groups.nceas.ucsb.edu/<u></u>non-linear-modeling/projects/<u></u>weeds/WRITEUP/weeds.pdf</a><br>
<br>
there are 12 data points<br>
<br>
t weeds<br>
1 5.308<br>
2 7.24<br>
3 9.638<br>
4 12.866<br>
5 17.069<br>
6 23.192<br>
7 31.443<br>
8 38.558<br>
9 50.156<br>
10 62.948<br>
11 75.995<br>
12 91.972<br>
<br>
The model to be fit is<br>
<br>
y = b_1/(1+b_2*exp(-b_3*t))<br>
<br>
We are told several times how difficult this data set is to fit.<br>
<br>
In fact is is a trivial data set to fit as I shall show. The<br>
problem is that the parametrization used is a very poor one.<br>
<br>
Consider the parameter b_1. This is the number of weeds at t=infinity.<br>
<br>
It appears to be somewhat greater than 91, but how much? It is not really obvious.<br>
the parameter b_2 is even less intuitive.<br>
<br>
we shall replace b_1 and b_2 with two parameters whose value is almost obvious,<br>
namely the number of weeds at time t_1=1, and t_n=12. Call thes parameter y_1 and y_n.<br>
<br>
clearly y_1 is close to 5.308 and y_n is close to 91.9<br>
<br>
Given values for y_1, y_2, and b_3 it is a simple matter to solve for b_2 and b_1.<br>
<br>
The code in the tpl file is<br>
<br>
b3=exp(logb3);<br>
dvariable gamma1=exp(-b3*t(1));<br>
dvariable gamman=exp(-b3*t(noObs));<br>
b2=(yn-y1)/(y1*gamma1-yn*<u></u>gamman); // solve for b2<br>
b1=y1*(1.0+b2*gamma1); // solve for b1<br>
<br>
For both models the sum of squares is rss 2.58728<br>
<br>
Now lets make the data a bit more challenging. we change the 12'th data point to<br>
110.<br>
<br>
For Ander's verion the sum of squares is rss 60.6799<br>
<br>
while for my version it is rss 55.8948<br>
<br>
Now change the 12'th data point to 125.<br>
<br>
For Ander's version the sum of squares is rss 237.054<br>
and for mine rss 133.582<br>
<br>
So maybe we should think more about how to parameterize these models.<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@admb-project.org">Users@admb-project.org</a><br>
<a href="http://lists.admb-project.org/mailman/listinfo/users" target="_blank">http://lists.admb-project.org/mailman/listinfo/users</a><br>
<br></blockquote></div><br></div>