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