Home  /  Products  /  Features  /  Mata—Stata's serious programming language
Order

Mata—Stata's serious programming language

Mata is a programming language that looks a lot like Java and C, but adds direct support for matrix programming. Mata is a compiled language, which makes it fast. You can use Mata interactively when you want to quickly perform matrix calculations, or you can use Mata when you need to write complex programs. Mata has the structures, pointers, and classes that you expect in your programming language. In fact, Mata is Stata's development language. Most new features of Stata are written in Mata. This includes multilevel modeling, latent class analysis, Bayesian estimation, and even the core algorithms of the graphical SEM Builder. But Mata is not just for Stata developers; you too can take advantage of this powerful programming language.

Take a quick look at Mata.

Environment

  • Interactive—type matrix expressions and see results
  • Development—full development environment for developing programs and commands
  • Automatically compiled code

General features and matrix operators

  • Matrices with more than 2 billion rows and columns in Stata/MP
  • Matrices with up to 2 billion rows and columns in Stata/SE and Stata/IC
  • Support for real and complex values
  • Joining by rows or columns
  • Addition, subtraction, multiplication, and scalar division
  • Elementwise arithmetic
  • Transposition and reshaping
  • Kronecker and Hadamard products
  • Inner and outer products

Optimization features

  • Code the function, function and gradient, or function, gradient, and Hessian
  • Newton–Raphson, BFGS, DFP, BHHH, Nelder–Mead, and Gauss–Newton techniques
  • Versions for general problems and statistical problems like maximum likelihood
  • Covariance matrix based on Hessian, outer product of gradients, or robust/sandwich
  • Linear programming

Mathematical and matrix functions

  • LAPACK numerical analysis routines
  • Intel® Math Kernel Library (MKL)
  • Hundreds of mathematical, string, and matrix utility functions
  • Expansive date and time functions Updated
  • Unicode-aware string functions
  • Locale-based sorting and string comparison
  • Symmetric, nonsymmetric, and generalized inverses
  • Cholesky , LU , QR , and SVD solvers
  • Trigonometric and other transcendental functions
  • Gamma and factorial functions
  • Density and distribution functions
  • Polynomial evaluation , arithmetic, and calculus
  • Hilbert , Toeplitz , and Vandermonde matrices
  • Duplication , commutation , and elimination matrices
  • Random-number generation
  • Fast Fourier analysis
  • Cubic splines
  • Means , sums , minimums and maximums of matrices
  • Numerical first and second derivatives
  • Numerical integration
  • Vectorized numerical integration New
Explore all of Mata’s functions.

Stata interface

  • Convert Stata datasets to matrices and vice versa
  • Virtual matrix views onto dataset
  • Access and set estimation-class and other macros
  • Manipulate dataset value labels
  • Access and manipulate Stata data frames

Compiled language

  • C/C++-like syntax
  • Classes
  • Structures
  • Pointers
  • Numeric and string types
  • Matrices as an intrinsic type, including row and column vectors and full matrices

Object-oriented programming

  • Inheritance
  • Virtual functions
  • Encapsulation of data structures and programs

Decompositions

  • Eigenvalues and eigenvectors
  • Cholesky
  • LU and LUD
  • LDL
  • QR
  • Schur
  • Hessenberg
  • Singular value
  • Permutation matrices

Data accumulation

  • Cross products
  • Cross products of deviations from means
  • Weighted and GLS-type cross products
  • Support for quad-precision cross products

Nonlinear system solver

  • Fixed-point and root-finding problems
  • Gauss–Seidel, Broyden–Powell, and Newton–Raphson methods

Creation of Word, Excel, and PDF files

  • Programmatic access to create Word documents
  • Low-level cell-by-cell access to write results to and read data from Excel, including graphs, formulas, date formats, currency formats, bold, italics, and more. Updated
  • Programmatic access to create PDF files

Other features

  • String scalars and matrices, including Unicode and Base64 support Updated
  • File I/O , including buffered I/O
  • URL percent encoding and decoding
  • C-like syntax
  • Fast execution

Additional resources

Read the Introduction to Mata.

See New in Stata 18 to learn about what was added in Stata 18.