## Comparing Univariate and Multivariate Control Charts

```/*****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                  */
/*                                                               */
/*    NAME: MVPMNEX3                                             */
/*   TITLE: Comparing Univariate and Multivariate Control Charts */
/* PRODUCT: QC                                                   */
/*  SYSTEM: ALL                                                  */
/*    KEYS: SERIES statement                                     */
/*   PROCS: MVPMONITOR                                           */
/*    DATA:                                                      */
/*                                                               */
/* SUPPORT: saswgr                                               */
/*     REF: PROC MVPMONITOR, Example 3                           */
/*                                                               */
/*****************************************************************/

proc iml;
Mean = {0,0,0};
Cor = {1.0 0.8 0.8,
0.8 1.0 0.8,
0.8 0.8 1.0};
StdDevs = {2 2 2};
D = diag(StdDevs);
Cov = D*Cor*D; /* covariance matrix */
NumSamples = 30;
call randseed(123321);  /* set seed for the RandNormal module */
X = RandNormal(NumSamples, Mean, Cov);
varnames = { x1 x2 x3};
create mvpStable from X [colname = varnames];
append from X;
quit;
run;
data mvpStable;
set mvpStable;
hour=_n_;
run;

proc iml;
Mean = {0,0,0};
Cor = { 1.0 -0.8  0.8,
-0.8  1.0 -0.8,
0.8 -0.8  1.0};
StdDevs = {2 2 2};
D = diag(StdDevs);
Cov = D*Cor*D; /* covariance matrix */
NumSamples = 5;
call randseed(123321);  /* set seed for the RandNormal module */
X = RandNormal(NumSamples, Mean, Cov);
varnames = { x1 x2 x3};
create mvpOOC from X [colname = varnames];
append from X;
quit;
run;
data mvpOOC;
set mvpStable mvpOOC;
hour=_n_;
run;

proc mvpmodel data=mvpStable ncomp=1 plots=none out=scores
var x1 x2 x3;
run;

time hour;
tsquarechart;
spechart;
run;

proc shewhart data=mvpOOC;
irchart (x1 x2 x3) * hour / markers nochart2;
run;

```