Matta Matters (excerpt)

From W. Gould (2007). Mata Matters: Subscripting. The Stata Journal, 7(1):106-116. http://www.stata-journal.com/article.html?article=pr0028.

This is a case of something difficult to program in Stata being trivial in Mata. The following example is well worth understanding.

: X
        1    2    3
    ┌────────────────┐
  1 │   4    7    9  │
  2 │   2   12    3  │
  3 │   8    8    7  │
  4 │   3    4    1  │
  5 │   1    7    9  │
    └────────────────┘

: uniformseed(39483)

: o = ceil(5*uniform(5,1))

: o
       1
    ┌─────┐
  1 │  2  │
  2 │  1  │
  3 │  5  │
  4 │  5  │
  5 │  2  │
    └─────┘

: Z = X[o,]

: Z
        1    2    3
    ┌────────────────┐
  1 │   2   12    3  │
  2 │   4    7    9  │
  3 │   1    7    9  │
  4 │   1    7    9  │
  5 │   2   12    3  │
    └────────────────┘

Below I use these ideas to perform a bootstrap of the regression of mpg on weight and foreign, using the automobile data:

. sysuse auto, clear
(1978 Automobile Data)

. mata:
───────────────────────────────────────────────── mata (type end to exit) ──────────────────────────
:     st_view(datay=., ., "mpg")

:     st_view(dataX=., ., tokens("weight foreign"))

:     n = rows(datay)

:     dataX = dataX, J(n, 1, 1)

:     N = 10000 // number of replications

:     uniformseed(47686)

:     b = J(N, 3, .)

:     for (i = 1; i <= N; i++) {
>         o = ceil(n*uniform(n,1))
>         y = datay[o,]
>         X = dataX[o,]
>         b[i,] = (invsym(X'X)*X'y)'
>     }

:     variance(b)
[symmetric]
                  1              2              3
    ┌──────────────────────────────────────────────┐
  1 │   3.10765e-07                                │
  2 │    .000172885     1.29395868                 │
  3 │  -.0010054771    -.645488234    3.355736044  │
    └──────────────────────────────────────────────┘

: end
────────────────────────────────────────────────────────────────────────────────────────────────────

These results are similar to those that would be produced in Stata by typing estat vce after bootstrap, reps(10000): regress mpg weight foreign.