更正 SAS 代码的解释

Correction of the Interpretation of the SAS code

我是 sas 的新手。你能帮我解释以下代码行吗:

proc means data=crsp1 noprint;
var ret;
by gvkey datadate year;
output out=exec_roll_vol_fyear n=nrollingstd std=rollingstd;
run;

data volatility;
set exec_roll_vol_fyear;
where &start_year <= year <= &end_year;
* we have volatility of monthly returns,
converting to annual volatility;
estimated_volatility=rollingstd*(12**0.5);
proc sort nodupkey;
by gvkey year;
run;

这是否意味着以下内容:获取数据 "crsp1" 并创建一个包含 "ret" 滚动标准差的数据集 "exec_roll_vol_fyear"? (我不太明白 "proc means" 在这里代表什么)

第二部分:使用数据"exec_roll_vol_fyear"创建数据集"volatility",其中estimated_volatility=rollingstd*(12**0.5)并删除gvkey年份的重复项。我说得对吗?

PROC MEANS是汇总数据的汇总过程。在这种情况下,它将计算 gvkey datadate year 的每个唯一组合的 n 和标准差,并输出到数据集 exec_roll_vol_fyear。这可能是一个 "rolling" 标准偏差,如果传入数据的结构适当地做到这一点(基本上,如果 datadate 定义滚动 windows 并且如果任何给定记录为每个 window 它落在);不可能告诉。不过,SAS 中有更好的时间序列分析工具。

然后,数据步骤应用公式从标准差创建新变量,然后按 gvkey 和年份对结果数据集进行排序,删除重复项。