Hi I have a question about how the covariance is estimated in MAXLIK. I have calculated the hessian by :

`vread(_max_Diagnostic,"hessian");`

which gives me:

0.098854902 -0.044789408 0.21265749 -0.098746774 -0.044789408 0.097216091 -0.097149608 0.21118073 0.21265749 -0.097149608 0.66755658 -0.33440959 -0.098746774 0.21118073 -0.33440959 0.66921942

The inverse of this matrix is:

45.059278 24.224743 -15.109826 -8.5460929 24.224743 45.880519 -8.6733621 -15.237785 -15.109826 -8.6733621 7.0742131 4.0424484 -8.5460929 -15.237785 4.0424484 7.0617510

However when I use `cov`

, I get:

0.057190334 0.030671550 -0.018652539 -0.010151653 . . . . . 0.030671550 0.057763764 -0.010134082 -0.019056447 . . . . . -0.018652539 -0.010134082 0.0081342988 0.0043459482 . . . . . -0.010151653 -0.019056447 0.0043459482 0.0083873686 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

which is different from the inverse of the Hessian matrix.

I have 1000 observations, `_max_CovPar`

is set to 1, and the gradient is calculated numerically. This is the gradient:

-0.00033315205 -0.00010445805 -0.00079539564 -0.00014439259

## 4 Answers

0

accepted

The version of the Hessian retrieved in `_max_diagnostic`

is an intermediary calculation of the Hessian in the iterations. It is not the final one. The covariance matrix returned in `cov`

is computed after convergence and will differ from the ones computed during the iterations.

If you are interested in the Hessian computed after convergence, you will find that in the global, `_max_FinalHess`

.

0

The covariance matrix in the `cov`

return argument takes into account the number of observations.

```
cov = {
0.057190334 0.030671550 -0.018652539 -0.010151653,
0.030671550 0.057763764 -0.010134082 -0.019056447,
-0.018652539 -0.010134082 0.0081342988 0.0043459482,
-0.010151653 -0.019056447 0.0043459482 0.0083873686 };
```

Here is `invpd(cov)/1000`

and you'll notice that it closely resembles the Hessian retrieved in `_max_diagnostic`

.

0.0908 -0.0441 0.2049 -0.0964 -0.0441 0.0906 -0.0964 0.2024 0.2049 -0.0964 0.6321 -0.2985 -0.0964 0.2024 -0.2985 0.6170

Here is `1000*cov`

and you'll notice that it resembles the inverse of the Hessian in `_max_diagnostic`

.

57.1903 30.6715 -18.6525 -10.1517 30.6715 57.7638 -10.1341 -19.0564 -18.6525 -10.1341 8.1343 4.3459 -10.1517 -19.0564 4.3459 8.3874

0

Thank you for the response. However, still there is some discrepancy between the inverse of hessian and `1000*cov`

:

This is inverse of the Hessian

45.059278 24.224743 -15.109826 -8.5460929 24.224743 45.880519 -8.6733621 -15.237785 -15.109826 -8.6733621 7.0742131 4.0424484 -8.5460929 -15.237785 4.0424484 7.0617510

and this is `1000*cov`

:

57.1903 30.6715 -18.6525 -10.1517 30.6715 57.7638 -10.1341 -19.0564 -18.6525 -10.1341 8.1343 4.3459 -10.1517 -19.0564 4.3459 8.3874

Is there anything else that is factored in calculating `cov`

?

0

Thank you very much. Now it makes sense.

## Your Answer

## 4 Answers

The version of the Hessian retrieved in `_max_diagnostic`

is an intermediary calculation of the Hessian in the iterations. It is not the final one. The covariance matrix returned in `cov`

is computed after convergence and will differ from the ones computed during the iterations.

If you are interested in the Hessian computed after convergence, you will find that in the global, `_max_FinalHess`

.

The covariance matrix in the `cov`

return argument takes into account the number of observations.

```
cov = {
0.057190334 0.030671550 -0.018652539 -0.010151653,
0.030671550 0.057763764 -0.010134082 -0.019056447,
-0.018652539 -0.010134082 0.0081342988 0.0043459482,
-0.010151653 -0.019056447 0.0043459482 0.0083873686 };
```

Here is `invpd(cov)/1000`

and you'll notice that it closely resembles the Hessian retrieved in `_max_diagnostic`

.

0.0908 -0.0441 0.2049 -0.0964 -0.0441 0.0906 -0.0964 0.2024 0.2049 -0.0964 0.6321 -0.2985 -0.0964 0.2024 -0.2985 0.6170

Here is `1000*cov`

and you'll notice that it resembles the inverse of the Hessian in `_max_diagnostic`

.

57.1903 30.6715 -18.6525 -10.1517 30.6715 57.7638 -10.1341 -19.0564 -18.6525 -10.1341 8.1343 4.3459 -10.1517 -19.0564 4.3459 8.3874

Thank you for the response. However, still there is some discrepancy between the inverse of hessian and `1000*cov`

:

This is inverse of the Hessian

45.059278 24.224743 -15.109826 -8.5460929 24.224743 45.880519 -8.6733621 -15.237785 -15.109826 -8.6733621 7.0742131 4.0424484 -8.5460929 -15.237785 4.0424484 7.0617510

and this is `1000*cov`

:

Is there anything else that is factored in calculating `cov`

?

Thank you very much. Now it makes sense.