[R] Discrete choice model maximum likelihood estimation
infinitehorizon
barisvardar at hotmail.com
Mon May 14 18:36:11 CEST 2012
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.
More information about the R-help
mailing list