Hi,
I am working on the Klein-Spady semiparametric estimator.
I am trying to use call NLPNRA to generate a maximum likelihood estimate. IML gives an ERROR message saying that I am taking log of zero. But I checked the arguments in all the log commands, none of them is zero.
Below is the program and the error message. Thanks for your help.
ERROR: (execution) Invalid argument to function.
operation : LOG at line 296 column 45
operands : _TEM1008
_TEM1008 1 row 1 col (numeric)
0
statement : ASSIGN at line 296 column 1
traceback : module LOGLIK at line 296 column 1
ERROR: NEWRAP Optimization cannot be completed.
ERROR: The function value of the objective function cannot be computed at the starting point.
I don't understand what you are doing well enough to diagnose what is going wrong, but from the error messages I assume that the LINK variable is getting out of the open interval (0,1). If you put in the line
link = choose( link<=0 | link>=1, ., link);
then the algorithm converge. Unless there is a theoretical reason why a quantity cannot be less than zero, it's a good programming practice to protect against taking log(negative_value).
First, look at the following article: Maximum likelihood estimation in SAS/IML - The DO Loop
What are the meanings of your three parameters (for example, location, scale, or shape parameters). Are any of your parameters constrained? If so, see Step 2 in the article.
thank you,
it's just a binary model, the parameters are not constraint and the initial values come from the proc logistic.
the module computes the log likelihood so i don't understand the problem
I don't understand what you are doing well enough to diagnose what is going wrong, but from the error messages I assume that the LINK variable is getting out of the open interval (0,1). If you put in the line
link = choose( link<=0 | link>=1, ., link);
then the algorithm converge. Unless there is a theoretical reason why a quantity cannot be less than zero, it's a good programming practice to protect against taking log(negative_value).
thanks for this advice, it's work fine