Sas 计算增长率,改进过程扩展

Sas 计算增长率,改进过程扩展,sas,Sas,我有一个已排序的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扩展来计算滞后,然后通过一个数据步骤来计算增长率。我想知道是否有一个较短的方法来做到这一点?特别是

我有一个已排序的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点,我想尽量减少返工。

您可以完全使用数据步骤。这假设您正在请求前面的四行。不过,我不确定[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;