## Sample Correlation Analysis

```/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: CORSTAND                                            */
/*   TITLE: Sample Correlation Analysis                         */
/* PRODUCT: IML                                                 */
/*  SYSTEM: ALL                                                 */
/*    KEYS: MATRIX  REGR    SUGI6                               */
/*   PROCS: IML                                                 */
/*    DATA:                                                     */
/*                                                              */
/* SUPPORT: Rick Wicklin                UPDATE: SEP 2013        */
/*     REF:                                                     */
/*    MISC:                                                     */
/*                                                              */
/****************************************************************/

proc iml;
/* Standardize data: Assume no column has 0 variance */
start stdMat(x);
mean = mean(x);                        /* means for columns */
cx = x - mean;                     /* center x to mean zero */
std = std(x);                 /* standard deviation estimate*/
y = cx / std(x);                    /* scaling to std dev 1 */
return( y );
finish stdMat;

x = { 1 2 3,
3 2 1,
4 2 1,
0 4 1,
24 1 0,
1 3 8};
nm = {age weight height};
std = stdMat(x);
print std[colname=nm label="Standardized Data"];

/* Compute correlations: Assume no missing values  */
start corrMat(x);
n = nrow(x);                      /* number of observations */
sum = x[+,];                         /* compute column sums */
xpx = x`*x - sum`*sum/n;           /* compute sscp matrix   */
s = diag(1/sqrt(vecdiag(xpx)));           /* scaling matrix */
corr = s*xpx*s;                       /* correlation matrix */
return( corr );
finish corrMat;

corr = corrMat(x);
print corr[rowname=nm colname=nm label="Correlation Matrix"];

/* Another way to compute correlations: Assume no missing values */
start corrMat2(x);
y = StdMat(x);                       /* standardize columns */
corr = (y`*y)/(nrow(x)-1);            /* correlation matrix */
return( corr );
finish corrMat2;

c = corrMat2(x);

```