Notice: On March 31, it was **announced** that Statalist is moving from an email list to a **forum**. The old list will shut down on April 23, and its replacement, **statalist.org** is already up and running.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

From |
David Chan <david.c.chan@gmail.com> |

To |
statalist@hsphsun2.harvard.edu |

Subject |
st: Mata maximum likelihood error on trivial regression |

Date |
Fri, 19 Aug 2011 12:46:10 -0400 |

Hi all, I'm having problems with doing maximum likelihood in Mata. Even in the most basic setup, I'm getting the error, "could not calculate numerical derivatives -- flat or discontinuous region encountered r(430)." I'm almost certain that this is not because of problems with the data or model, but it probably has something to do with a naive programming error. I'm simulating my own data, and I'm testing out the program on a very simple linear regression model, y=Ey+zeta_k+epsilon, where epsilon is a random, normally distributed term, and Ey and zeta_k are both observed regressors (both with coefficient 1). After simulating data according to this model, simple regression, > reg y Ey zeta_k" works fine. Also when I code up the trivial MLE in Stata as an ado program, I have no problems: > program mynormal_lf > args lnfj mu sigma > qui replace `lnfj'=ln(normalden($ML_y1,`mu',`sigma')) > end > ml model lf mynormal_lf (mu: lnlos = Ey zeta_k) /sigma > ml maximize However, when I code it up in Mata, using the code below, I always get the error message, even when I set the initial values at the true parameters: > mata: > void mydynamic_lf(transmorphic scalar ML, real rowvector b, /// > real colvector lnfj) > { > real colvector y, xb > real colvector sd > y=moptimize_util_depvar(ML,1) > xb=moptimize_util_xb(ML,b,1) > j=moptimize_util_eq_indices(ML,2) > sd=exp(b[|j|]) > lnfj=ln(normalden(y,xb,sd)) > } > end > ml model lf mydynamic_lf() (mu: lnlos = Ey zeta_k) /sigma > ml maximize I've tried renaming the variables within Mata, as well as changing the variable declaration (e.g., calling "sd" a scalar rather than a colvector), but nothing seems to work. Does anyone know what I'm doing wrong? Dave * * For searches and help try: * http://www.stata.com/help.cgi?search * http://www.stata.com/support/statalist/faq * http://www.ats.ucla.edu/stat/stata/

- Prev by Date:
**Re: st: _N in by-groups** - Next by Date:
**st: What's new in v12 file format? [was: stattransfer]** - Previous by thread:
**st: variables in mca** - Next by thread:
**st: Using OVERID after REG3 with a system of equations** - Index(es):