How to overlay custom curves with PROC SGPLOT

I recently showed someone a trick to create a graph, and he was extremely pleased to learn it. The trick is well known to many SAS users, but I hope that this article will introduce it to even more SAS users. At issue is how to use the SGPLOT procedure [...]
Post a Comment

How to generate multiple samples from the multivariate normal distribution in SAS

A SAS customer asks: How do I use SAS to generate multiple samples of size N from a multivariate normal distribution? Suppose that you want to simulate k samples (each with N observations) from a multivariate normal distribution with a given mean vector and covariance matrix. Because all of the [...]
Post a Comment

The case of spilled coffee and the regression intercept

Argh! I’ve just spilled coffee on output that shows the least squares coefficients for a regression model that I was investigating. Now the parameter estimate for the intercept is completely obscured, although I can still see the parameter estimates for the coefficients of the continuous explanatory variable. What can I [...]
Post a Comment

How to access any program or data set that appears in the SAS/STAT documentation

If you are like me, you’ve experienced the following frustration. You are reading the SAS/STAT documentation, trying to understand some procedure or option, when you find an example that is very similar to what you need. “Great,” you think, “this example will help me understand how the SAS procedure works!” [...]
Post a Comment

Find variables common to multiple data sets

Last week the SAS Training Post blog posted a short article on an easy way to find variables in common to two data sets. The article used PROC CONTENTS (with the SHORT option) to print out the names of variables in SAS data sets so that you can visually determine [...]
Post a Comment

Oh, those pesky temporary variables!

The SAS/IML language secretly creates temporary variables. Most of the time programmers aren’t even aware that the language does this. However, there is one situation where if you don’t think carefully about temporary variables, your program will silently produce an error. And as every programmer knows, silent wrong numbers are [...]
Post a Comment

Generate binary outcomes with varying probability

A while ago I saw a blog post on how to simulate Bernoulli outcomes when the probability of generating a 1 (success) varies from observation to observation. I’ve done this often in SAS, both in the DATA step and in the SAS/IML language. For example, when simulating data that satisfied [...]
Post a Comment

Remove or keep: Which is faster?

In a recent article on efficient simulation from a truncated distribution, I wrote some SAS/IML code that used the LOC function to find and exclude observations that satisfy some criterion. Some readers came up with an alternative algorithm that uses the REMOVE function instead of subscripts. I remarked in a [...]
Post a Comment

Beware the naked LOC

The LOC function is one of the most important functions in the SAS/IML language. The LOC function finds elements of a vector or matrix that satisfy some condition. For example, if you are going to apply a logarithmic transform to data, you can use the LOC function to find all [...]
Post a Comment

Compute the log-determinant of a matrix

The determinant of a matrix arises in many statistical computations, such as in estimating parameters that fit a distribution to multivariate data. For example, if you are using a log-likelihood function to fit a multivariate normal distribution, the formula for the log-likelihood involves the expression log(det(Σ)), where Σ is the [...]
Post a Comment