【发布时间】:2026-01-22 07:30:01
【问题描述】:
我必须计算事件窗口的每日销售值的相关性和协方差。事件窗口的期限为 45 天,我的数据看起来像 -
store_id date sales
5927 12-Jan-07 3,714.00
5927 12-Jan-07 3,259.00
5927 14-Jan-07 3,787.00
5927 14-Jan-07 3,480.00
5927 17-Jan-07 3,646.00
5927 17-Jan-07 3,316.00
4978 18-Jan-07 3,530.00
4978 18-Jan-07 3,103.00
4978 18-Jan-07 3,026.00
4978 21-Jan-07 3,448.00
现在,对于每个 store_id、日期组合,我需要返回 45 天(我的原始数据集中每个组合都有更多数据)计算销售额和滞后(销售额)之间的相关性,即一级自相关。如您所见,日期列不是连续的。所以像 (date - 45) 这样的东西是行不通的。
我已经到了这部分 -
data ds1;
set ds;
by store_id;
LAG_SALE = lag(sales);
IF FIRST.store_idTHEN DO;
LAG_SALE = .;
END;
run;
用于计算相关性和协方差 -
proc corr data=ds1 outp=Corr
by store_id date;
cov; /** include covariances **/
var sales lag_sale;
run;
但是如何为每个日期、store_id 组合插入事件窗口?我的最终输出应该是这样的 -
id date corr cov
5927 12-Jan-07 ... ...
5927 14-Jan-07 ... ...
【问题讨论】:
-
你有 SAS/ETS 许可吗?
-
对于每个 store_id/date 组合,您希望数据与该 store_id 和日期的协方差和相关性,还是与该 store_id 的日期和最近 45 个不同日期内的日期的协方差和相关性?您的问题建议第二个,但您的 proc corr 建议第一个。
-
我想要每个 store_id/date 组合的销售和销售滞后的相关性和 cov。是的,我已获得许可。
-
嗯,在那种情况下我很困惑;如果对每个 store_id/date 组合分别计算相关性和协方差,那么 45 天的意义何在?
-
对于每个 store_id 和 date,我返回 45 天以获得两个系列销售额和 45 个观察值的 lag_sales,即 (-45, 0)。我不想计算所有数据的协方差,只是在有限的时间内,看看它是如何变化的。
标签: sas covariance correlation