|
SAS CornerBy Dr.Karl Ho, Research and Statistical Support Services ManagerIML Workshop and IMLPlusMany SAS users may use only a portion of the software for certain area of services. Database programmers use it for data management and data mining; Econometricians focus on SAS' time series modeling and forecasting modules (ETS, STATESPACE), Project managers utilize the system for managing calendars, Gann diagrams and scheduling (CALENDAR, PROJMAN), etc. On top of these, SAS also has extended functionality for application or program development in different directions. These extensions include language systems that allow programmers to develop their own routines or modules to serve specialized needs or research. This article introduces the latest development of one of the SAS languages called Interactive Matrix Language (IML). What is IML?IML is a flexible programming language for programmers, statisticians, and researchers to write routines in an interactive environment to perform specialized statistical analysis and data exploration. It operates on a matrix, a two-dimensional (row-by-column) array of numeric or character values, which renders operations and calculations of mathematical procedures more efficient and flexible. While a series of built-in functions and routines are available, programmers can also write modules and build a library of customized modules. For instance, a professor can use IML to write his own regression model program and create a simulation routine to replicate the regression model with simulated or resampled data. What is new to IML?In SAS version 8.x, there are a couple of new additions to SAS/IML: IML Workshop and IML Plus. The former is a standalone GUI environment for programmers to write and execute IML programs, plus explore data with graphical tools such as data tables and charts. The IML workshop is "standalone" in a sense that it is a separate application but not independent. It still depends on a SAS server (an installed version of SAS 8.x on the same machine or a remote host) running in the background. It augments IML with great graphical control and a much better programming environment with debugging facilities.
IML workshop is accompanied by the extended IMLPlus language, which allows IML to perform data visualization, access remote data and accommodate object-oriented programming include Java, C, C++ and FORTRAN. In performing the latter, IMLPlus provides a mechanism through which an IMLPlus program can call external user-defined Win32 Dynamic-Link Library (DLL) or a Java class to run within the IML Workshop environment(*). In so doing, it provides a real interface to programs written in other languages to run under one roof. In PROC IML, a programmer can generate static plots and graphs within the syntax. In the IML Workshop environment, you can generate dynamic graphics composed of objects associated to data displayed in a separate worksheet. Chart objects can also be modified for better presentation or model revision. The following are a few demos and sample programs that illustrate the capability of IML Workshop and IMLPlus: Pie Chart:
Linear Fit Plot:
Histogram:
Pyramid:
A collection of modules are also provided for programmers to incorporate into their own program. They include:
Latest developmentCurrently the IML Workshop is still in beta version 1.0 (Beta 4, Build 70). It is available for free downloading at http://www.sas.com/rnd/app/da/workshop.html. The site also carries more detailed information and documentation about the software. The requirement for IML Workshop is an installed copy of SAS 8.1 onwards, either on the local or a remote computer. In the upcoming SAS 8.2, IML will incorporate enhanced Wavelets modules and Fractionally Integrated Time Series Analysis (where the integrated process is not restricted to integer values, and estimation of ARFIMA is possible) subroutines. These new features will further add to the toolbox for scientists and researchers to conduct wavelet and time series analysis. (*) Technically, IML Workshop's client-server architecture executes the functions/routines dynamically back and forth between the background server and front-end client.While generally matrix computations occur on the server, Java-based operations are mostly on the client. External user-defined functions such as C or FORTRAN, however, are run on the client Windows PC. |