[R] Adding weights to optim

Rolf Turner rolf.turner at xtra.co.nz
Sat Sep 24 03:10:08 CEST 2011



I'm not at all sure that I understand your question, but since (as far
as I am aware) no-one else has answered, I'll give it a go.

The puzzle, to me, is what you mean by ``I would like to add weights
to optim.''  What do you mean ``add weights''?

If you want to minimize a weighted sum of squares, it seems to me to
be trivial:

logis.op <- function(p,x,y,w=1) {
     ypred <- 1.0 / (1.0 + exp((p[1] - x) / p[2]));
     sum(w*(y-ypred)^2)
}

(Note that your ``res <- ...'' and ``return(res)'' are unnecessary.)

optim(c(0.0,1.0),logis.op,x=d1_all$SOA,y=as.numeric(md1[,i]),
                                         w=<whatever weights you had in 
mind>)

HTH

     cheers,

         Rolf Turner


On 23/09/11 13:47, Ahnate Lim wrote:
> I realize this may be more of a math question. I have the following optim:
>
> optim(c(0.0,1.0),logis.op,x=d1_all$SOA,y=as.numeric(md1[,i]))
>
> which uses the following function:
>
> logis.op<- function(p,x,y) {
>
>    ypred<- 1.0 / (1.0 + exp((p[1] - x) / p[2]));
>
> res<- sum((y-ypred)^2)
>
>      return(res)
>
> }
>
> I would like to add weights to the optim. Do I have to alter the logis.op
> function by adding an additional weights parameter? And if so, how would I
> change the ypred formula? Would I just substitute x with x*w



More information about the R-help mailing list