Of course, that was the trick! It works now. Thank you very much Rui, I am very grateful. I hope this thread will help others as well.
Best, Rui Barradas wrote > > Once again, sorry. > I had a different llfn in my R session and it messed with yours. > > llfn <- function(param, a, tt) { > > > llfn <- sum((a==1)*lL1+(a==2)*lL2+(a==3)*lL3) # sum of logs, it's a > log-likelihood. > return(-llfn) > } > > Rui Barradas > > infinitehorizon wrote >> >> Hello again, >> >> You are absolutely right about probabilities.. Thanks for reminding me >> about that. >> >> I did exactly how you said but in the end I receive the error : >> "objective function in optim evaluates to length 12 not 1". >> I checked how llfn give a vector instead of scalar, but couldn't figure >> it out. >> >> Can you please tell me how did you obtain those estimates? >> Thanks again, >> >> Best, >> >> Marc >> >> >> Rui Barradas wrote >>> >>> Hello, again. >>> >>> Bug report: >>> 1. Your densities can return negative values, 1 - exp(...) < 0. >>> Shouldn't those be 1 PLUS exp()? >>> >>> P3 <- function(bx,b3,b,tt) { >>> P <- exp(bx*x+b3+b*(tt == 1))/(1+exp(bx*x+b3+b*(tt == 1))) >>> return(P) >>> } >>> >>> And the same for P2 and P1? >>> >>> 2. Include 'a' and 'tt' as llfn parameters and call like the following. >>> >>> llfn <- function(param, a, tt) { >>> >>> [... etc ...] >>> return(-llfn) >>> } >>> >>> start.par <- rep(0, 5) >>> est <- optim(start.par, llfn, gr=NULL, a=a, tt=tt) >>> est >>> $par >>> [1] 4.1776294 -0.9952026 -0.7667640 -0.1933693 0.7325221 >>> >>> $value >>> [1] 0 >>> >>> $counts >>> function gradient >>> 44 NA >>> >>> $convergence >>> [1] 0 >>> >>> $message >>> NULL >>> >>> >>> Note the optimum value of zero, est$value == 0 >>> >>> Rui Barradas >>> >>> infinitehorizon wrote >>>> >>>> By the way, in my last post I forgot to return negative of llfn, hence >>>> the llfn will be as follows: >>>> >>>> llfn <- function(param) { >>>> >>>> bx <- param[1] >>>> b1 <- param[2] >>>> b2 <- param[3] >>>> b3 <- param[4] >>>> b <- param[5] >>>> >>>> lL1 <- log(L1(bx,b1,b2,b,tt)) >>>> lL2 <- log(L2(bx,b1,b2,b3,b,tt)) >>>> lL3 <- log(L3(bx,b1,b2,b3,b,tt)) >>>> >>>> llfn <- (a==1)*lL1+(a==2)*lL2+(a==3)*lL3 >>>> return(-llfn) >>>> } >>>> >>>> However, it does not fix the problem, I still receive the same error.. >>>> >>> >> > -- View this message in context: http://r.789695.n4.nabble.com/Discrete-choice-model-maximum-likelihood-estimation-tp4629877p4629962.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.