[R] optimization problems

2011-08-13 Thread Ravi Varadhan
Kathie,

It is very difficult to help without adequate information.  What does your 
objective function look like? Are you maximizing (in which case you have to 
make sure that the sign of the objective function is correct) or minimizing?

Can you try "optimx" with the control option all.methods=TRUE?

Hope this is helpful,
Ravi.

__
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.


Re: [R] optimization problems

2011-08-13 Thread John C Nash
optimx with BFGS uses optim, so you actually incur some overhead unnecessarily. 
And BFGS
really needs good gradients (as does Rvmmin and Rcgmin which are updated BFGS 
and CG, but
all in R and with bounds or box constraints).

>From the Hessian, your function is (one of the many!) that have pretty bad 
>numerical
properties. With all 0s, Newton is spinning in his grave. Probably the gradient 
is small
also. So the optimizers decide they are at a minimum.

As a first step, I'd suggest
- checking that the function is computed correctly. That is, does your function 
give the
correct value?

- try a few other points "nearby". Are any "lower" than your first point?

- Use numDeriv and get the gradient (and possibly Hessian) at each of these 
nearby points.

These steps may reveal either that you have a bug in the function, or that it 
is pretty
nasty numerically. In the latter case, you really need to try to find an 
equivalent
function e.g., log(f) that can be minimized more easily.

For information, I'm rather slowly working on a function test suite to do this. 
Also a lot
of changes are going on in optimx to try to catch some of the various nasties. 
These
appear first in the R-forge development versions. Use and comments welcome.

If you DO find a lower point, then I'd give Nelder-Mead a try. Ravi Varadhan 
has a variant
of this that may do a little better in dfoptim.

You could also be a bit lazy and try optimx with the control 
"all.methods=TRUE". Not
recommended for production use, but often helpful in seeing if any method can 
get some
traction.

Cheers,

JN







On 08/13/2011 06:00 AM, r-help-requ...@r-project.org wrote:
> -- Message: 47 Date: Sat, 13 Aug 2011 01:12:09 
> -0700 (PDT)
> From: Kathie  To: r-help@r-project.org Subject: 
> [R]
> optimization problems Message-ID: <1313223129383-3741005.p...@n4.nabble.com> 
> Content-Type:
> text/plain; charset=us-ascii Dear R users I am trying to use OPTIMX(OPTIM) 
> for nonlinear
> optimization. There is no error in my code but the results are so weird (see 
> below). When
> I ran via OPTIM, the results are that Initial values are that theta0 = 0.6 
> 1.6 0.6 1.6
> 0.7. (In fact true vales are 0.5,1.0,0.8,1.2, 0.6.)
> 
>> > optim(par=theta0, fn=obj.fy, method="BFGS", control=list(trace=1,
>> > maxit=1), hessian=T)
> initial  value -0.027644 
> final  value -0.027644 
> converged
> $par
> [1] 0.6 1.6 0.6 1.6 0.7
> 
> $value
> [1] -0.02764405
> 
> $counts
> function gradient 
>11 
> 
> $convergence
> [1] 0
> 
> $message
> NULL
> 
> $hessian
>  [,1] [,2] [,3] [,4] [,5]
> [1,]00000
> [2,]00000
> [3,]00000
> [4,]00000
> [5,]00000
> 
> 
> When I ran via OPTIMX, the results are that
> 
> 
>> > optimx(par=theta0, fn=obj.fy, method="BFGS", control=list(maxit=1),
>> > hessian=T)
> par fvalues   method   fns grs  itns
> conv KKT1 KKT2 xtimes
> 1 0.6, 1.6, 0.6, 1.6, 0.7   -0.02764405 BFGS 1   1   NULL0 TRUE  
> NA   8.71
>> > 
> 
> 
> Whenever I used different initial values, the initial ones are the answer of
> OPTIMX(OPTIM).
> 
> Would you plz explain why it happened? or any suggestion will be greatly
> appreciated.
> 
> Regards,
> 
> Kathryn Lord 
> 
> --
> View this message in context: 
> http://r.789695.n4.nabble.com/optimization-problems-tp3741005p3741005.html
> Sent from the R help mailing list archive at Nabble.com.
> 
>

__
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.


Re: [R] optimization problems

2011-08-13 Thread Kathie
To be honest, 

The first derivative of my objective function is very complicated so I
ignore this. Could it lead to this sort of problem?

Kathie

--
View this message in context: 
http://r.789695.n4.nabble.com/optimization-problems-tp3741005p3741010.html
Sent from the R help mailing list archive at Nabble.com.

__
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.


[R] optimization problems

2011-08-13 Thread Kathie
Dear R users

I am trying to use OPTIMX(OPTIM) for nonlinear optimization.

There is no error in my code but the results are so weird (see below).

When I ran via OPTIM, the results are that

Initial values are that theta0 = 0.6 1.6 0.6 1.6 0.7. (In fact true vales
are 0.5,1.0,0.8,1.2, 0.6.)

> optim(par=theta0, fn=obj.fy, method="BFGS", control=list(trace=1,
> maxit=1), hessian=T)
initial  value -0.027644 
final  value -0.027644 
converged
$par
[1] 0.6 1.6 0.6 1.6 0.7

$value
[1] -0.02764405

$counts
function gradient 
   11 

$convergence
[1] 0

$message
NULL

$hessian
 [,1] [,2] [,3] [,4] [,5]
[1,]00000
[2,]00000
[3,]00000
[4,]00000
[5,]00000


When I ran via OPTIMX, the results are that


> optimx(par=theta0, fn=obj.fy, method="BFGS", control=list(maxit=1),
> hessian=T)
par fvalues   method   fns grs  itns
conv KKT1 KKT2 xtimes
1 0.6, 1.6, 0.6, 1.6, 0.7   -0.02764405 BFGS 1   1   NULL0 TRUE  
NA   8.71
> 


Whenever I used different initial values, the initial ones are the answer of
OPTIMX(OPTIM).

Would you plz explain why it happened? or any suggestion will be greatly
appreciated.

Regards,

Kathryn Lord 

--
View this message in context: 
http://r.789695.n4.nabble.com/optimization-problems-tp3741005p3741005.html
Sent from the R help mailing list archive at Nabble.com.

__
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.