Blog Archives

Did you know that PROC IML automatically loads certain modules?

May 29, 2012
By
Did you know that PROC IML automatically loads certain modules?

In the SAS/IML language, a user-defined function or subroutine is called a module. Modules are used to extend the capability of the SAS/IML language. Usually you need to explicitly load modules before you use them, but there are two cases where PROC IML loads a module automatically. Modules in IMLMLIB [...]

Read more »

Compute statistics for each row by using subscript operators

May 23, 2012
By
Compute statistics for each row by using subscript operators

In a previous blog, I showed how to use SAS/IML subscript reduction operators to compute the location of the maximum values for each row of a matrix. The subscript reduction operators are useful for computing simple statistics for each row (or column) of a numerical matrix. If x is a [...]

Read more »

For each observation, find the variable that contains the minimum value

May 21, 2012
By
For each observation, find the variable that contains the minimum value

The other day I encountered an article in the SAS Knowledge Base that shows how to write a macro that "returns the variable name that contains the maximum or minimum value across an observation." Some people might say that the macro is "clever." I say it is complicated. This is [...]

Read more »

The curious case of random eigenvalues

May 16, 2012
By
The curious case of random eigenvalues

I've been a fan of statistical simulation and other kinds of computer experimentation for many years. For me, simulation is a good way to understand how the world of statistics works, and to formulate and test conjectures. Last week, while investigating the efficiency of the power method for finding dominant [...]

Read more »

How to read data set variables into SAS/IML vectors

May 14, 2012
By
How to read data set variables into SAS/IML vectors

One of the first skills that a beginning SAS/IML programmer learns is how to read data from a SAS data set into SAS/IML vectors. (Alternatively, you can read data into a matrix). The beginner is sometimes confused about the syntax of the READ statement: do you specify the names of [...]

Read more »

The power method: compute only the largest eigenvalue of a matrix

May 9, 2012
By
The power method: compute only the largest eigenvalue of a matrix

When I was at SAS Global Forum last week, a SAS user asked my advice regarding a SAS/IML program that he wrote. One step of the program was taking too long to run and he wondered if I could suggest a way to speed it up. The long-running step was [...]

Read more »

Checking your answers: Are computed values close to the true values?

May 7, 2012
By
Checking your answers: Are computed values close to the true values?

In statistical programming, I often test a program by running it on a problem for which I know the correct answer. I often use a single expression to compute the maximum value of the absolute difference between the vectors: maxDiff = max( abs( z-correct ) ); /* largest absolute difference [...]

Read more »

Expand data by using frequencies

May 4, 2012
By
Expand data by using frequencies

A reader asked: I want to create a vector as follows. Suppose there are two given vectors x=[A B C] and f=[1 2 3]. Here f indicates the frequency vector. I hope to generate a vector c=[A B B C C C]. I am trying to use the REPEAT function [...]

Read more »

The DIF function: Compute lagged differences and finite differences

May 2, 2012
By
The DIF function: Compute lagged differences and finite differences

To a statistician, the DIF function (which was introduced in SAS/IML 9.22) is useful for time series analysis. To a numerical analyst and a statistical programmer, the function has many other uses, including computing finite differences. The DIF function computes the difference between the original vector and a shifted version [...]

Read more »

The LAG function: Useful for more than time series analysis

April 30, 2012
By
The LAG function: Useful for more than time series analysis

To a statistician, the LAG function (which was introduced in SAS/IML 9.22) is useful for time series analysis. To a numerical analyst and a statistical programmer, the function provides a convenient way to compute quantitites that involve adjacent values in any vector. The LAG function is essentially a "shift operator." [...]

Read more »


Subscribe

Email:

  Subscribe