Understanding local and global variables in the SAS/IML language

The TV show Cheers was set in a bar “where everybody knows your name.” Global knowledge of a name is appealing for a neighborhood pub, but not for a programming language. Most programming languages enable you to define functions that have local variables: variables whose names are known only inside [...]
Post a Comment

How to overlay a custom density curve on a histogram in SAS

I’ve previously described how to overlay two or more density curves on a single plot. I’ve also written about how to use PROC SGPLOT to overlay custom curves on a graph. This article describes how to overlay a density curve on a histogram. For common distributions, you can overlay a [...]
Post a Comment

Point/Counterpoint: Where should you put ODS SELECT and ODS OUTPUT statements?

ODS statements are global SAS statements. As such, you can put them anywhere in your SAS program. For maximum readability, many SAS programmers agree that most ODS statements should appear outside procedures in “open” SAS code. For example, most programmers agree that the following statements should appear outside of procedures: [...]
Post a Comment

How to compute the distance between observations in SAS

In statistics, distances between observations are used to form clusters, to identify outliers, and to estimate distributions. Distances are used in spatial statistics and in other application areas. There are many ways to define the distance between observations. I have previously written an article that explains Mahalanobis distance, which is [...]
Post a Comment

Got Matrix? Reach for the SAS/IML language

Someone recently asked a question on the SAS Support Communities about estimating parameters in ridge regression. I answered the question by pointing to a matrix formula in the SAS documentation. One of the advantages of the SAS/IML language is that you can implement matrix formulas in a natural way. 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

Construct normal data from summary statistics

Last week there was an interesting question posted to the “Stat-Math Statistics” group on LinkedIn. The original question was a little confusing, so I’ll state it in a more general form: A population is normally distributed with a known mean and standard deviation. A sample of size N is drawn [...]
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

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

12 Tips for SAS Statistical Programmers

It’s the start of a new year. Have you made a resolution to be a better data analyst? A better SAS statistical programmer? To learn more about multivariate statistics? What better way to start the New Year than to read (or re-read!) the top 12 articles for statistical programmers from [...]
Post a Comment