Hello,

I am new to R and I am trying to estimate a discrete model with three
choices. I am stuck at a point and cannot find a solution.

I have probability functions for occurrence of these choices, and then I
build the likelihood functions associated to these choices and finally I
build the general log-likelihood function.

There are four parameters in the model, three of them are associated to
three discrete choices I mentioned, and one of them is for a binary variable
in the data (t).  There are also latent variables but I didn't put them in
this question because if I figure out how to do this, I will be able to add
them as well.

I am not familiar with the syntax I have to write in the likelihood
functions, so I really doubt that they are true.  Below I simplify the
problem and provide the code I've written:

# Probabilities for discrete choices for a=3, a=2 and a=1 respectively
P3      <- function(b3,b,t) {
P       <- exp(b3+b*(t==1))/(1-exp(b3+b*(t==1)))
return(P)               
}
P2      <- function(b2,b,t) {
P       <- exp(b2+b*(t==1))/(1-exp(b2+b*(t==1)))
return(P)               
}
P1      <- function(b1,b,t) {
P       <- exp(b1+b*(t==1))/(1-exp(b1+b*(t==1)))
return(P)               
}

# Likelihood functions for discrete choices for a=3, a=2 and a=1
respectively

L3      <- function(b1,b2,b3,b,t) {
P11     <- P1(b1,b,t)
P22     <- P2(b2,b,t)
P33     <- P3(b3,b,t)

L3l     <- (P11=1)*(P22=1)*(P33=1)
return(L3l)
}

L2      <- function(b1,b2,b3,b,t) {
P11     <- P1(b1,b,t)
P22     <- P2(b2,b,t)
P33     <- P3(b3,b,t)

L2l     <- (P11=1)*(P22=1)*(P33=0)
return(L2l)
}

L1      <- function(b1,b2,b,t) {
P11     <- P1(b1,b,t)
P22     <- P2(b2,b,t)

L1l     <- (P11=1)*(P22=0)
return(L1l)
}

# Log-likelihood function

llfn    <- function(par,a,t) {

b1      <- par[1]
b2      <- par[2]
b3      <- par[3]
b       <- par[4]

lL1     <- log(L1(b1,b2,b,t))
lL2     <- log(L2(b1,b2,b3,b,t))
lL3     <- log(L3(b1,b2,b3,b,t))

llfn    <- (a==1)*lL1+(a==2)*lL2+(a==3)*lL3
}
est     <- optim(par,llfn, method = c("CG"),control=list(trace=2,maxit=2000),
hessian=TRUE)

And when I run this code I get "cannot coerce type 'closure' to vector of
type 'double'" error.
I will really appreciate your help. Thanks,



--
View this message in context: 
http://r.789695.n4.nabble.com/Discrete-choice-model-maximum-likelihood-estimation-tp4629877.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.

Reply via email to