Without the data and objective function, it is fairly difficult to tell what is
going on.
However, we can note:
- no method is specified, but it would have to be L-BFGS-B as this is
the only
one that can handle box constraints
- the fourth parameter is at a different scale, and you are right to think about
this, especially as you don't seem to be providing analytic gradients.
Options:
- I would definitely rescale your function i.e., in the code, so your rawpar[4]
is
10000*par[4]. That gets all the scales approx. the same, assuming your start reflects the
eventual answer
- try bobyqa from minqa package once scaled -- it really doesn't like scale
differences.
If you have data and a script nicely packaged that can be emailed, I'll take a look at it.
If analytic gradients can be provided, there are more possibilities too, e.g., Rvmmin. spg
from BB package also does constraints.
It may, of course, turn out that the solution really is on the boundary.
JN
Message: 47
Date: Mon, 05 Jul 2010 21:53:18 +0200
From: Fabian Gehring <fabian.gehr...@bluewin.ch>
To: r-help@r-project.org
Subject: [R] selection of optim parameters
Message-ID: <4c32382e.3050...@bluewin.ch>
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Hi all,
I am trying to rebuild the results of a study using a different data
set. I'm using about 450 observations. The code I've written seems to
work well, but I have some troubles minimizing the negative of the
LogLikelyhood function using 5 free parameters.
As starting values I am using the result of the paper I am rebuiling.
The system.time of the calculation of the function is about 0.65 sec.
Since the free parameters should be within some boundaries I am using
the following command:
optim(fn=calculateLogLikelyhood, c(0.4, 2, 0.4, 80000, 0.8),
lower=c(0,0,0,0,0), upper=c(1, 5, Inf, Inf, 1), control=list(trace=1,
maxit=1000))
Unfortunately the result doesn't seem to be reasonable. 3 of the
optimized parameters are on the boundaries.
Unfortunately I don't have much experience using optimizatzion methods.
That's why I am asking you.
Do you have any hints for me what should be taken into account when
doing such an optimization.
Is there a good way to implement the boundaries into the code (instead
of doing it while optimizing)? I've read about parscale in the
help-section. Unfortunately I don't really know how to use it. And
anyways, could this help? What other points/controls should be taken
into account?
I know that this might be a bit little information about my current
code. But I don't know what you need to give me some advise. Just let me
know what you need to know.
Thankds
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.