From: Sundar Dorai-Raj <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: Christian Schulz <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED]
Subject: Re: [R] optim "a log-likelihood function"
Date: Wed, 29 Sep 2004 10:41:45 -0700



Christian Schulz wrote:

Hello,

i know that i have to use optim, but i'm confused how its
possible  maximize  the sum over all l[i] and get the optimized
max(LL), r  and alpha?

LL <- function(trans,time){
for(i in 1:length(trans){
l[i] <- log(lgamma(r+trans[i] - gamma(r+1)*(alpha/alpha+t[i]))**r)*(t[i]/alpha+t[i]))**trans[i]
}
return(sum(l))
}


i'm confused how i have to set r and alpha and i found no related help in archives?

...in Excel it works with solver but only for ~65.000 rows :-)

#This notation is 1 for trans and 1 for time instead the Startvalues for r and alpha?


I'm not sure what the above statement means, so I may have misinterpretted what you are trying to accomplish.


optim(c(1,1),-LL)

many thanks  for an easy example or hint regards,christian


Did you look at the first example in ?optim? There also numerous errors in LL: missing parans, time is not used, t is undefined in the function.


LL <- function(x, trans, time) {
  r <- x[1]
  alpha <- x[2]
  ...
  sum(l)
}

optim(c(1, 1), LL, control = list(fnscale = -1),
      trans = trans, time = time)

Some style issues:
1. Break up lines that run too long, especially if you expect others to read your code.
2. You don't need an explicit "return" at the end of a function.
3. You should remove the "for" loop in LL and vectorise "l", which should be easy.



I also use optim, however, for my case, can you show some light on avoiding the loop?


There are around 200 sets of (i,j,k) where i<=j<=k. 3 situations exist whether "=" hold, I list one for example,

                     l<-i:(k-j+i)
                     s<-rep(0,k)
                     s[l]<-choose(j,i)*choose((k-j),(l-i))/choose(k,l)
                     ss<-sum(s*x0)

then sum all the log(ss) is my log-liklihood function.

One loop from 1 to 200 is inevitable. I have tried to use vector, however, I only can simply to this situation. Thanks.

Regards,

Zhen

Hope this is helpful,

--sundar

______________________________________________
[EMAIL PROTECTED] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

______________________________________________ [EMAIL PROTECTED] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to