I need to estimate a "Linear Probability" Specification in a Binary
Choice model, using specifically maximum likelihood estimation.
The log-likelihood of such a specification is
loglik = y*log(x.*b) + (1-y)*(1-x.*b)
where y is the scalar DepVar, "x" is the vector of regressors and "b"
is
the vector of unknown parameters.
The argument of the natural logarithm is not inherently constrained to
range in (0,1), so in the iterative maximization process, negative
values of x.*b or (1-x.*b) may be encountered at some of the
observations, which is not admissible for the logarithm.
Left as is, with a "catch" preceding the mle command, Gretl ignores the
lot and moves to the next round of randomly generated regressors (this
is a Monte Carlo study) etc. But there are cases where this happens with
/all/ generated samples. Note that the true specification here is indeed
the Linear Probability model (underlying error is Uniform).
Is there a way to tell Gretl to continue "insisting" on the sample where
at some step it encountered inadmissible values for the logarithm?
I tried to use functions, like (pseudo-code)
/
[generate X, y]
[initial parameter values through ols]
function series unifll(series y, series X, scalars b)
if (x.*b <=0) || (x.*b >=1)
series liky = NA
else
series liky = y*log(x.*b) + (1-y)*(1-x.*b)
endif
return liky
end function
catch mle logl = unifll(y, X, scalars b)
params b0 b1 b2 b3
end mle
/
but I get the message " error evaluating 'if' "
I cannot understand why I get this message, so I haven't actually seen
what happens with the mle-algorithm in such an approach.
Any suggestions?
--
Alecos Papadopoulos
PhD Candidate
Athens University of Economics and Business, Greece
Department of Economics
https://alecospapadopoulos.wordpress.com/