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

Re: st: Linear regression using Mata optimize

From   Nicola Orsini <>
Subject   Re: st: Linear regression using Mata optimize
Date   Tue, 10 Feb 2009 18:08:14 +0100

Thank you very much Bobby and Kit,

I got the point and the answer to my question.

Below is the syntax to estimate MLEs using Mata -optimize()- in linear regression.


/* Linear regression using Mata optimize */

sysuse auto, clear
local xlist mpg _cons

mata clear

void mlreg(todo, p, y, X, lf, g, H)
b = p[1,(1::cols(X)) ]
s=  p[1,(cols(X)+1)]
lf = lnnormalden( (y-X*b'):/s ) :- ln(s)

  S = optimize_init()
  optimize_init_evaluator(S, &mlreg())
  optimize_init_evaluatortype(S, "v0")
  optimize_init_params(S, J(1,cols(X)+1,3))
  optimize_init_argument(S, 1, y)
  optimize_init_argument(S, 2, X)

  p = optimize(S)
  vhat = optimize_result_V(S)

  st_matrix("b", p[1,(1::cols(X))])
  st_matrix("V", vhat[(1::cols(X)),(1::cols(X))])


matrix colnames b = `xlist'
matrix colnames V = `xlist'
matrix rownames V = `xlist'

ereturn post b V , dep(price)
ereturn di

xtmixed price mpg, ml


On Feb 10, 2009, at 3:52 PM, Roberto G. Gutierrez, StataCorp wrote:

Nicola Orsini <> asks:

My question is why I'm not getting the correct variance-covariance matrix in
the example below (simple linear regression) when using
optimize_result_V(S).  Any thoughts on this?

I haven't looked at the Mata code closely, but I see that Nicola is comparing his program to -regress-. -regress- gives OLS standard errors, which are _not_ maximum likelihood (ML). They are REML. The difference is one of dividing by n instead of (n-p), but it is enough to throw off the standard

If Nicola wants to test his optimize() code, he should try comparing with
-xtmixed, mle-, which fits ML linear regression as a degenerate case.

*   For searches and help try:

*   For searches and help try:

© Copyright 1996–2023 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index