How to Calculate a Moving Average in SAS


In statistics, a moving average represents the average of the previous n values in a dataset.

The easiest way to calculate a moving average in SAS is to use the proc expand statement.

The following example shows how to use this statement in practice.

Example: Calculate a Moving Average in SAS

Suppose we create the following dataset in SAS:

/*create dataset*/
data original_data;
    input time values;
    datalines;
1 7
2 12
3 14
4 12
5 16
6 18
7 11
8 10
9 14
10 17
;
run;

/*view dataset*/
proc print data=original_data;

Now suppose we would like to calculate a 3-period moving average for the values column.

We can use proc expand to do so:

/*calculate 3-period moving average for values*/
proc expand data=original_data out=out_data method=none;
    id time;
    convert values = values_ma3 / transout=(movave 3);
run;

/*view results*/
proc print data=out_data;

The new column called values_ma3 displays the 3-period moving average for the values column.

For example, the third value in the values_ma3 column represents the average of the previous 3 periods:

  • Moving Average = (7+12+14) / 3 = 11.0000

The fourth value in the values_ma3 column represents the average of the previous 3 periods as well:

  • Moving Average = (12+14+12) / 3 = 12.6667

And so on.

To calculate the moving average for a different number of periods, simply change the value after movave in the code.

For example, we could use the following code to calculate a 4-period moving average for the values column:

/*calculate 4-period moving average for values*/
proc expand data=original_data out=out_data method=none;
    id time;
    convert values = values_ma4 / transout=(movave 4);
run;

/*view results*/
proc print data=out_data;

The new column called values_ma4 displays the 4-period moving average for the values column.

Additional Resources

The following articles explain how to perform other common tasks in SAS:

How to Identify Outliers in SAS
How to Calculate Percentiles in SAS
How to Calculate Mean, Median, & Mode in SAS

Leave a Reply

Your email address will not be published.