[R] How to get the minimum ?

Christoph Buser buser at stat.math.ethz.ch
Thu Jul 7 17:04:15 CEST 2005

Dear Philipe

You can use optimize (see ?optimize), e.g. :

funToMin <- function(x, data, a = 1, b = 1) {
  sum((data[data[,"group"]=="A","y"] - x)^2) +
    sum((data[data[,"group"]=="B","y"] - a*x - b)^2)

dat <- data.frame(y = rnorm(100), group = rep(c("A","B"), each = 50))
(m <- optimize(function(x) funToMin(x,dat), interval = c(-10,10)))

Please be careful. This function is only for demonstration
issue. It is bad programmed. It works if x is only 1 number,
but if you call the function, using a vector instead of a single
number (and I do not prevent this by checking it), you will get
warnings or errors. Therefore it will be better to use your own,
hopefully better programmed function in optimize.


Christoph Buser

Christoph Buser <buser at stat.math.ethz.ch>
Seminar fuer Statistik, LEO C13
ETH (Federal Inst. Technology)	8092 Zurich	 SWITZERLAND
phone: x-41-44-632-4673		fax: 632-1228

Philippe Lamy writes:
 > Hi,
 > I have a model with differents observations Xi.
 > Each observation belongs to a group, either A or B.
 > I would like to minimize a fonction like :
 > sum( Xi - Z)^2 + sum (Xi - aZ -b)^2
 >  A                B
 > The first sum contains all observations from group A and the second all
 > observations from group B.
 > I want to find the Z-value wich minimize this function. a and b are predefined
 > parameters.
 > Thanks for help.
 > Philippe
 > ______________________________________________

More information about the R-help mailing list