SAS/IML® (SAS 9.4) Features

Matrix functions

  • Use matrix operations such as multiplication, direct products and factorizations.
  • Apply mathematical operators and functions to each element of a matrix.
  • Use multithreaded computations for large matrices.
  • Find elements in a matrix that satisfy given conditions.
  • Compute descriptive statistics for each column of a matrix.
  • Create structured matrices, such as diagonal, banded and block diagonal.
  • Reshape, transpose and concatenate matrices.
  • Compute correlation and covariance matrices.
  • Count, identify or remove missing values or other special values from matrices.

Control statements

  • Direct the flow of execution of SAS/IML statements.
  • Enable program modularization.
  • Perform numerical analysis and call statistical functions.
  • Find roots of polynomials and general nonlinear functions.
  • Compute inverses and generalized inverses, and solve sparse systems of linear equations.
  • Compute numerical integrals and derivatives; compute eigenvalues and eigenvectors.
  • Perform Cholesky, singular value and complete orthogonal decompositions.
  • Perform QR decomposition by Householder rotation or the Gram-Schmidt process.
  • Perform discrete sequential tests.

Time series functions

  • Analyze ARMA models and their generalizations.
  • Simulate a univariate ARMA time series or multivariate correlated time series.
  • Compute autocovariance estimates for time series.
  • Perform finite Fourier transformations and inverse FFTs, Kalman filtering and wavelet analysis.

Numerical analysis functions

  • Perform numerical integration.
  • Use nonlinear optimization.

Optimization algorithms

  • Solve linear programming and mixed-integer linear programming problems.
  • Use multiple methods for constrained and unconstrained nonlinear optimization.
  • Specify linear or nonlinear constraints.
  • Apply genetic algorithms.

Data visualization

  • Create standard ODS statistical graphics, such as histograms and scatter plots.
  • Create heat maps to visualize data in matrices.
  • Call ODS statistical procedures directly to create complex graphs.

Data simulation

  • Generate random samples from standard univariate distributions.
  • Generate random samples from standard multivariate distributions.
  • Generate random permutations and combinations.
  • Generate a random sample from a finite set.


  • Define your own function modules.
  • Create and share packages of functions.
  • Call any SAS procedure or DATA step.
  • Call R functions and packages.

Interactive data analysis with SAS/IML Studio

Data exploration

  • Identify observations in plots.
  • Select observations in linked data tables and graphics.
  • Exclude observations from graphs and analyses.
  • Search, sort, subset and extract data.
  • Transform variables.

Distribution analysis

  • Compute descriptive statistics, quantile-quantile plots and mosaic plots of cross-classified data.
  • Fit parametric and kernel density estimates for distributions.
  • Detect outliers in contaminated Gaussian data.

Parametric & nonparametric regression

  • Fit general linear models, logistic regression models and robust regression models.
  • Smooth two-dimensional data by using polynomials, loess curves and thin-plate splines.
  • Create residual and influence diagnostic plots.
  • Include classification effects in logistic and generalized linear models.

Multivariate analysis

  • Create correlation matrices and scatter plot matrices with confidence ellipses.
  • Perform principal components analysis, discriminant analysis, factor analysis and correspondence analysis.
  • Efficient handling of large data transfers between client and server:
    • Parallel execution of multiple SAS/IML Studio workspaces.
    • Client support for 64-bit Windows.

Integrated programming environment in SAS/IML Studio

  • Write, debug and execute IMLPlus programs in an integrated development environment.
  • Create customized, dynamically linked graphics.
  • Develop interactive data analysis programs that use dialog boxes.