我有一个SAS数据集,已排序,有两列:PERIOD
和MYMETRIC
对于每一行,我想通过使用线性回归来计算前面4个时期的增长率。所以公式基本上是
GROWTH RATE = Cov([MYMETRIC_lag_4,MYMETRIC_lag_3, MYMETRIC_lag_2, MYMETRIC_lag_1],[1,2,3,4])/Var([1,2,3,4])
我可以在SAS中通过proc扩展计算滞后,然后计算增长率的数据步骤。我想知道是否有更短的方法来做到这一点?特别是如果突然,我选择包括8分而不是4分,我想尽量减少返工。
答案 0 :(得分:1)
您可以完全使用数据步骤。这假设您要求前四行。我不确定[1,2,3,4]的含义是什么,所以你必须准确填写增长率中的含义。
%let numlags=4;
data want;
set have;
array lags[&numlags] _temporary_; *temporary arrays are retained!;
growth_rate = cov(of lags[*])/var(of lags[*]); *if you want cov of the 4 lags divided by var of the 4 lags;
*move things about;
do _t = 1 to dim(lags)-1;
lags[_t]=lags[_t+1];
end;
lags[dim(lags)] = MYMETRIC;
run;