I'm looking to calculate rolling window pairwise correlations, something in SAS that replicates the following python function. Please let me know if you need data and more examples ?
Proc IML doesn't do the trick either :
proc iml;
use work.ret_trans;
read all var{date} into myDates;
read all var _NUM_ into X[colname=NumerNames];
do x=18 to nrow(myDates);
dt=myDates[x];
lagdt = intnx('month',dt,-18,'end');
read all var _NUM_ where(date <= dt & date > lagdt ) into trailing18;
idx = setdif(1:ncol(trailing18), 1);
pc = corr(trailing18);
if x=18 then create work.PairWise from pc ;
else edit work.PairWise ;
append from pc;
end;
quit;
pandas.rolling_corr pandas.rolling_corr(arg1, arg2=None, window=None, min_periods=None, freq=None, center=False, pairwise=None, how=None)
Moving sample correlation.
Parameters: Returns:
arg1 : Series, DataFrame, or ndarray arg2 : Series, DataFrame, or ndarray, optional
window : int
min_periods : int, default None
freq : string or DateOffset object, optional (default None)
center : boolean, default False
how : string, default ‘None’
pairwise : bool, default False
|
y : type depends on inputs
|
If you have SAS/ETS software, you can use PROC EXPAND. See the second example in Vora (2008):
http://www2.sas.com/proceedings/forum2008/093-2008.pdf
A DATA step solution is provided in the same paper.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.