在统计学中,移动平均数表示数据集中前n个数值的平均数。
在SAS中计算移动平均数的最简单方法是使用proc expand语句。
下面的例子说明了如何在实践中使用该语句。
例子:在SAS中计算移动平均线
假设我们在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;

现在假设我们想为数值列计算一个3期的移动平均线。
我们可以使用proc expand 来实现这一目的。
/*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;

新的名为values_ma3的列显示了value列的3周期移动平均线。
例如,values_ma3列中的第三个值代表前3个时期的平均值。
- 移动平均数=(7+12+14)/3=11.0000
values_ma3列中的第四个值也代表前三期的平均值。
- 移动平均数 = (12+14+12) / 3 =12.6667
以此类推。
要计算不同期数的移动平均数,只需改变代码中movave后面的数值。
例如,我们可以使用下面的代码来计算数值列的4周期移动平均线:
/*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;

新的名为values_ma4的列显示值列的4期移动平均线。