From W. Gould (2007). Mata Matters: Subscripting. The Stata Journal, 7(1):106-116. https://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.