Re: [R] Use of optim to fit two curves at the same time ?

2012-04-26 Thread Greg Snow
The phrase does not work is not very helpful, it can mean quit a few
things including:

* Your computer exploded.
* No explosion, but smoke is pouring out the back and microsoft's
NoSmoke utility is not compatible with your power supply.
* The computer stopped working.
* The computer sits around on the couch all day eating chips and
watching talk shows.
* The computer has started picketing your house shouting catchy
slogans and demanding better working conditions and an increase in
memory.
* Everything went dark and you cannot check the cables on the back of
the computer because the lights are off due to the power outage.
* R crashed, but the other programs are still working.
* R gave an error message and stopped processing your code after
running for a while.
* R gave an error message without running any of your code (and is
waiting for your next command).
* R is still running your code and the time has exceeded your patience
so you think it has hung.
* R completed and returned a result, but also gave warnings.
* R completed your command, but gave an incorrect answer.
* R completed your command but the answer is different from what you
expect (but is correct according to the documentation)

There are probably others.

Running your code I think the answer is the last one.  The criteria
for optim finishing is a small improvement relative to previous
improvements, not a guarantee of an exactly correct answer.  Since
your starting points were very different from the True values this
means that what appears to be a good improvement can still be far from
the answer that you know to be true.  There are various arguments that
you can give to optim to improve the fitting process, but sometimes
the easiest thing to do is to just run optim again using the previous
results as the new starting values.  Try running the following:

out4 - optim( par=out3$par, fn=function(x){optfunc3(x,dfxy,dfxy2)})
(out4 - optim( par=out4$par, fn=function(x){optfunc3(x,dfxy,dfxy2)}))

and see if it works.  Run the last line a couple more times to see
how well it works (at least it worked for me, if this does not work
for you, tell us what does not work means).

On Wed, Apr 25, 2012 at 6:57 AM, Arnaud Mosnier a.mosn...@gmail.com wrote:
 Dear list,

 In order to find a solution to my problem, I created a third objective
 function including both calculations done in the previous cases. This
 function return a value (i.e. the value to be minimize by optim) equal to
 the sum of the two sum of squares, but it does not work (see the code added
 at the end of my previous script).

 Any suggestion ?

 Arnaud


 Dear list,

 Here is a small example code that use optim and optimize in order to fit
 two functions.
 Is it possible to fit two functions (like those two for example) at the
 same time using optim ... or another function in R ?

 Thanks

 Arnaud

 ##
 ## function 1
 x1 - 1:100
 y1 - 5.468 * x + 3 # + rnorm(100,0, 10)
 dfxy - cbind(x1,y1)

 # Objective function
 optfunc - function(x, dfxy){
   a - x[1]
   b - x[2]
   xtest - dfxy[,1]
   yobs - dfxy[,2]
   ysim - a*xtest + b
   sum((ysim - yobs)^2)
 }

 out- optim(par=c(0.2,5), fn=function(x){optfunc(x, dfxy)}, method =
 Nelder-Mead, hessian = F)


 ## function 2

 x2 - seq(0.01, 0.1, length=100)
 y2 - exp(30*x2)
 dfxy2 - cbind(x2,y2)

 # objective function
 optfunc2 - function(x, dfxy){
   a - x[1]
   xtest - dfxy[,1]
   yobs - dfxy[,2]
   ysim - exp(a*xtest)
   sum((ysim - yobs)^2)
 }

 out- optimize(f=function(x){optfunc2(x, dfxy2)}, interval=c(0,500))

 ##



 optfunc3 - function(x,  dfxy, dfxy2){

  a - x[1]
  b - x[2]
  xtest - dfxy[,1]
  yobs - dfxy[,2]
  ysim - a*xtest + b
  obj1 - sum((ysim - yobs)^2)

  c - x[3]
  xtest2 - dfxy2[,1]
  yobs2 - dfxy2[,2]
  ysim2 - exp(c*xtest2)
  obj2 - sum((ysim2 - yobs2)^2)

 obj1 + obj2
 }

 out3- optim(par=c(0.2,5, 500), fn=function(x){optfunc3(x, dfxy, dfxy2)},
 method = Nelder-Mead, hessian = F)

        [[alternative HTML version deleted]]

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



-- 
Gregory (Greg) L. Snow Ph.D.
538...@gmail.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] Use of optim to fit two curves at the same time ?

2012-04-26 Thread Arnaud Mosnier
Nice, thank you !
I particularly appreciated the list of possible explanations for it does
not work ! :-)

Arnaud

Le 26 avril 2012 13:49, Greg Snow 538...@gmail.com a écrit :

 The phrase does not work is not very helpful, it can mean quit a few
 things including:

 * Your computer exploded.
 * No explosion, but smoke is pouring out the back and microsoft's
 NoSmoke utility is not compatible with your power supply.
 * The computer stopped working.
 * The computer sits around on the couch all day eating chips and
 watching talk shows.
 * The computer has started picketing your house shouting catchy
 slogans and demanding better working conditions and an increase in
 memory.
 * Everything went dark and you cannot check the cables on the back of
 the computer because the lights are off due to the power outage.
 * R crashed, but the other programs are still working.
 * R gave an error message and stopped processing your code after
 running for a while.
 * R gave an error message without running any of your code (and is
 waiting for your next command).
 * R is still running your code and the time has exceeded your patience
 so you think it has hung.
 * R completed and returned a result, but also gave warnings.
 * R completed your command, but gave an incorrect answer.
 * R completed your command but the answer is different from what you
 expect (but is correct according to the documentation)

 There are probably others.

 Running your code I think the answer is the last one.  The criteria
 for optim finishing is a small improvement relative to previous
 improvements, not a guarantee of an exactly correct answer.  Since
 your starting points were very different from the True values this
 means that what appears to be a good improvement can still be far from
 the answer that you know to be true.  There are various arguments that
 you can give to optim to improve the fitting process, but sometimes
 the easiest thing to do is to just run optim again using the previous
 results as the new starting values.  Try running the following:

 out4 - optim( par=out3$par, fn=function(x){optfunc3(x,dfxy,dfxy2)})
 (out4 - optim( par=out4$par, fn=function(x){optfunc3(x,dfxy,dfxy2)}))

 and see if it works.  Run the last line a couple more times to see
 how well it works (at least it worked for me, if this does not work
 for you, tell us what does not work means).

 On Wed, Apr 25, 2012 at 6:57 AM, Arnaud Mosnier a.mosn...@gmail.com
 wrote:
  Dear list,
 
  In order to find a solution to my problem, I created a third objective
  function including both calculations done in the previous cases. This
  function return a value (i.e. the value to be minimize by optim) equal to
  the sum of the two sum of squares, but it does not work (see the code
 added
  at the end of my previous script).
 
  Any suggestion ?
 
  Arnaud
 
 
  Dear list,
 
  Here is a small example code that use optim and optimize in order to fit
  two functions.
  Is it possible to fit two functions (like those two for example) at the
  same time using optim ... or another function in R ?
 
  Thanks
 
  Arnaud
 
  ##
  ## function 1
  x1 - 1:100
  y1 - 5.468 * x + 3 # + rnorm(100,0, 10)
  dfxy - cbind(x1,y1)
 
  # Objective function
  optfunc - function(x, dfxy){
a - x[1]
b - x[2]
xtest - dfxy[,1]
yobs - dfxy[,2]
ysim - a*xtest + b
sum((ysim - yobs)^2)
  }
 
  out- optim(par=c(0.2,5), fn=function(x){optfunc(x, dfxy)}, method =
  Nelder-Mead, hessian = F)
 
 
  ## function 2
 
  x2 - seq(0.01, 0.1, length=100)
  y2 - exp(30*x2)
  dfxy2 - cbind(x2,y2)
 
  # objective function
  optfunc2 - function(x, dfxy){
a - x[1]
xtest - dfxy[,1]
yobs - dfxy[,2]
ysim - exp(a*xtest)
sum((ysim - yobs)^2)
  }
 
  out- optimize(f=function(x){optfunc2(x, dfxy2)}, interval=c(0,500))
 
  ##
 
 
 
  optfunc3 - function(x,  dfxy, dfxy2){
 
   a - x[1]
   b - x[2]
   xtest - dfxy[,1]
   yobs - dfxy[,2]
   ysim - a*xtest + b
   obj1 - sum((ysim - yobs)^2)
 
   c - x[3]
   xtest2 - dfxy2[,1]
   yobs2 - dfxy2[,2]
   ysim2 - exp(c*xtest2)
   obj2 - sum((ysim2 - yobs2)^2)
 
  obj1 + obj2
  }
 
  out3- optim(par=c(0.2,5, 500), fn=function(x){optfunc3(x, dfxy, dfxy2)},
  method = Nelder-Mead, hessian = F)
 
 [[alternative HTML version deleted]]
 
  __
  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.



 --
 Gregory (Greg) L. Snow Ph.D.
 538...@gmail.com


[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide 

Re: [R] Use of optim to fit two curves at the same time ?

2012-04-26 Thread Marc Schwartz

On Apr 26, 2012, at 12:49 PM, Greg Snow wrote:

 The phrase does not work is not very helpful, it can mean quit a few
 things including:
 
 * Your computer exploded.
 * No explosion, but smoke is pouring out the back and microsoft's
 NoSmoke utility is not compatible with your power supply.
 * The computer stopped working.
 * The computer sits around on the couch all day eating chips and
 watching talk shows.
 * The computer has started picketing your house shouting catchy
 slogans and demanding better working conditions and an increase in
 memory.
 * Everything went dark and you cannot check the cables on the back of
 the computer because the lights are off due to the power outage.
 * R crashed, but the other programs are still working.
 * R gave an error message and stopped processing your code after
 running for a while.
 * R gave an error message without running any of your code (and is
 waiting for your next command).
 * R is still running your code and the time has exceeded your patience
 so you think it has hung.
 * R completed and returned a result, but also gave warnings.
 * R completed your command, but gave an incorrect answer.
 * R completed your command but the answer is different from what you
 expect (but is correct according to the documentation)
 
 There are probably others.


snip

Since Greg has kindly raised the fortunes package today, I propose that the 
above be captured as an R Classic.

Regards,

Marc Schwartz

__
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] Use of optim to fit two curves at the same time ?

2012-04-26 Thread Arnaud Mosnier
I second the proposition !
Thanks to let me discover that absolutely essential library !! :-)

Arnaud

Le 26 avril 2012 15:30, Marc Schwartz marc_schwa...@me.com a écrit :


 On Apr 26, 2012, at 12:49 PM, Greg Snow wrote:

  The phrase does not work is not very helpful, it can mean quit a few
  things including:
 
  * Your computer exploded.
  * No explosion, but smoke is pouring out the back and microsoft's
  NoSmoke utility is not compatible with your power supply.
  * The computer stopped working.
  * The computer sits around on the couch all day eating chips and
  watching talk shows.
  * The computer has started picketing your house shouting catchy
  slogans and demanding better working conditions and an increase in
  memory.
  * Everything went dark and you cannot check the cables on the back of
  the computer because the lights are off due to the power outage.
  * R crashed, but the other programs are still working.
  * R gave an error message and stopped processing your code after
  running for a while.
  * R gave an error message without running any of your code (and is
  waiting for your next command).
  * R is still running your code and the time has exceeded your patience
  so you think it has hung.
  * R completed and returned a result, but also gave warnings.
  * R completed your command, but gave an incorrect answer.
  * R completed your command but the answer is different from what you
  expect (but is correct according to the documentation)
 
  There are probably others.


 snip

 Since Greg has kindly raised the fortunes package today, I propose that
 the above be captured as an R Classic.

 Regards,

 Marc Schwartz



[[alternative HTML version deleted]]

__
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] Use of optim to fit two curves at the same time ?

2012-04-26 Thread Rolf Turner

On 27/04/12 05:49, Greg Snow wrote:

The phrase does not work is not very helpful, it can mean quit a few
things including:

* Your computer exploded.
* No explosion, but smoke is pouring out the back and microsoft's
NoSmoke utility is not compatible with your power supply.
* The computer stopped working.
* The computer sits around on the couch all day eating chips and
watching talk shows.
* The computer has started picketing your house shouting catchy
slogans and demanding better working conditions and an increase in
memory.
* Everything went dark and you cannot check the cables on the back of
the computer because the lights are off due to the power outage.
* R crashed, but the other programs are still working.
* R gave an error message and stopped processing your code after
running for a while.
* R gave an error message without running any of your code (and is
waiting for your next command).
* R is still running your code and the time has exceeded your patience
so you think it has hung.
* R completed and returned a result, but also gave warnings.
* R completed your command, but gave an incorrect answer.
* R completed your command but the answer is different from what you
expect (but is correct according to the documentation)

There are probably others.

Running your code I think the answer is the last one.


The foregoing is so priceless that I think it ought to be a fortune,
irrespective of its length.

cheers,

Rolf Turner

__
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] Use of optim to fit two curves at the same time ?

2012-04-25 Thread Arnaud Mosnier
Dear list,

In order to find a solution to my problem, I created a third objective
function including both calculations done in the previous cases. This
function return a value (i.e. the value to be minimize by optim) equal to
the sum of the two sum of squares, but it does not work (see the code added
at the end of my previous script).

Any suggestion ?

Arnaud


Dear list,

 Here is a small example code that use optim and optimize in order to fit
 two functions.
 Is it possible to fit two functions (like those two for example) at the
 same time using optim ... or another function in R ?

 Thanks

 Arnaud

 ##
 ## function 1
 x1 - 1:100
 y1 - 5.468 * x + 3 # + rnorm(100,0, 10)
 dfxy - cbind(x1,y1)

 # Objective function
 optfunc - function(x, dfxy){
   a - x[1]
   b - x[2]
   xtest - dfxy[,1]
   yobs - dfxy[,2]
   ysim - a*xtest + b
   sum((ysim - yobs)^2)
 }

 out- optim(par=c(0.2,5), fn=function(x){optfunc(x, dfxy)}, method =
 Nelder-Mead, hessian = F)


 ## function 2

 x2 - seq(0.01, 0.1, length=100)
 y2 - exp(30*x2)
 dfxy2 - cbind(x2,y2)

 # objective function
 optfunc2 - function(x, dfxy){
   a - x[1]
   xtest - dfxy[,1]
   yobs - dfxy[,2]
   ysim - exp(a*xtest)
   sum((ysim - yobs)^2)
 }

 out- optimize(f=function(x){optfunc2(x, dfxy2)}, interval=c(0,500))

 ##



optfunc3 - function(x,  dfxy, dfxy2){

  a - x[1]
  b - x[2]
  xtest - dfxy[,1]
  yobs - dfxy[,2]
  ysim - a*xtest + b
  obj1 - sum((ysim - yobs)^2)

  c - x[3]
  xtest2 - dfxy2[,1]
  yobs2 - dfxy2[,2]
  ysim2 - exp(c*xtest2)
  obj2 - sum((ysim2 - yobs2)^2)

obj1 + obj2
}

out3- optim(par=c(0.2,5, 500), fn=function(x){optfunc3(x, dfxy, dfxy2)},
method = Nelder-Mead, hessian = F)

[[alternative HTML version deleted]]

__
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] Use of optim to fit two curves at the same time ?

2012-04-24 Thread Arnaud Mosnier
Dear list,

Here is a small example code that use optim and optimize in order to fit
two functions.
Is it possible to fit two functions (like those two for example) at the
same time using optim ... or another function in R ?

Thanks

Arnaud

##
## function 1
x1 - 1:100
y1 - 5.468 * x + 3 # + rnorm(100,0, 10)
dfxy - cbind(x1,y1)

# Objective function
optfunc - function(x, dfxy){
  a - x[1]
  b - x[2]
  xtest - dfxy[,1]
  yobs - dfxy[,2]
  ysim - a*xtest + b
  sum((ysim - yobs)^2)
}

out- optim(par=c(0.2,5), fn=function(x){optfunc(x, dfxy)}, method =
Nelder-Mead, hessian = F)


## function 2

x2 - seq(0.01, 0.1, length=100)
y2 - exp(30*x2)
dfxy2 - cbind(x2,y2)

# objective function
optfunc2 - function(x, dfxy){
  a - x[1]
  xtest - dfxy[,1]
  yobs - dfxy[,2]
  ysim - exp(a*xtest)
  sum((ysim - yobs)^2)
}

out- optimize(f=function(x){optfunc2(x, dfxy2)}, interval=c(0,500))

##

[[alternative HTML version deleted]]

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