From rvaradhan at jhmi.edu  Wed Oct 13 15:27:29 2010
From: rvaradhan at jhmi.edu (Ravi Varadhan)
Date: Wed, 13 Oct 2010 09:27:29 -0400
Subject: [Rd] Wierd nlm behaviour in 2.10.1 and 2.12.0 [Sec=Unclassified]
In-Reply-To: <42C7503E0B99F248B06BC65E7D2B4E020187DD725C1C@EX2K7-CCR.AAD.GOV.AU>
References: <42C7503E0B99F248B06BC65E7D2B4E020187DD725C1C@EX2K7-CCR.AAD.GOV.AU>
Message-ID: <000301cb6ada$625e67c0$271b3740$@edu>

Hi Troy,

I think that your problem is poorly scaled.  You have variables that vary
over several orders of magnitude. This means that any small changes (due to
subtle differences between R versions) could cause a big difference in the
convergence behavior of the algorithms.  So, you are asking for trouble and
you got it.  I would scale the problem such that the parameters, function
and its gradient are essentially of the same magnitude.  

To paraphrase John Nash, who paraphrased Richard Varga, "It is all about
scaling".

Furthermore, I would specify the analytic gradient, which should be very
easy to derive.

Ravi.


-----Original Message-----
From: r-devel-bounces at r-project.org [mailto:r-devel-bounces at r-project.org]
On Behalf Of Troy Robertson
Sent: Wednesday, October 13, 2010 1:51 AM
To: 'r-devel at R-project.org'
Subject: [Rd] Wierd nlm behaviour in 2.10.1 and 2.12.0 [Sec=Unclassified]

Hi all,

When upgrading to 2.11.1 recently I noticed different results being produced
by my code.
After MUCH digging into my code I have finally narrowed it to a call to
nlm().
The problem actually occurs in 2.10.1 and 2.12.0.

This can be replicated by trying the code below in some different versions
of R:

FixedRemovals<-1836180125888
AbStageInitial<-2223033830403
Rates<- 0.3102445
myfunc<-function(rootM,Abund,Loss,OtherM)
     {(Loss-(rootM/(rootM+OtherM)*
      (1-exp(-(rootM+OtherM)))*
      Abund))^2}

nlm(myfunc
   ,0.001,print.level=0,fscale=0, gradtol=1E-10, stepmax = 100.0
   ,Loss=FixedRemovals
   ,Abund=AbStageInitial
   ,OtherM=Rates)

nlm(myfunc
   ,0.001,print.level=0,fscale=0, gradtol=1E-10, stepmax = 100.0
   ,Loss=FixedRemovals
   ,Abund=AbStageInitial
   ,OtherM=Rates)$estimate

Why would I be seeing a different value of 'estimate' (or any of the other
returned list items)?
Originally I thought it was 2.11.1 that was giving me the grief with
different output but now I see that in 2.11.1 I get the same value to each
returned list item both ways.
Can anyone explain this?

Thanks

Troy
___________________________________________________________________________

    Australian Antarctic Division - Commonwealth of Australia
IMPORTANT: This transmission is intended for the addressee only. If you are
not the
intended recipient, you are notified that use or dissemination of this
communication is
strictly prohibited by Commonwealth law. If you have received this
transmission in error,
please notify the sender immediately by e-mail or by telephoning +61 3 6232
3209 and
DELETE the message.
        Visit our web site at http://www.antarctica.gov.au/
___________________________________________________________________________

______________________________________________
R-devel at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] Wierd nlm behaviour in 2.10.1 and 2.12.0 [Sec=Unclassified]
Ravi Varadhan