Cusum and Standard Deviation Charts
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: CUSXS */
/* TITLE: Cusum and Standard Deviation Charts */
/* PRODUCT: QC */
/* SYSTEM: ALL */
/* KEYS: Cusum Charts, Shewhart Charts, */
/* PROCS: CUSUM SHEWHART */
/* DATA: */
/* */
/* SUPPORT: saswgr */
/* REF: PROC CUSUM, XCHART Statement, Getting Started 1 */
/* */
/****************************************************************/
data Oil;
label Hour = 'Hour';
input Hour @;
do i=1 to 4;
input Weight @;
output;
end;
drop i;
datalines;
1 8.024 8.135 8.151 8.065
2 7.971 8.165 8.077 8.157
3 8.125 8.031 8.198 8.050
4 8.123 8.107 8.154 8.095
5 8.068 8.093 8.116 8.128
6 8.177 8.011 8.102 8.030
7 8.129 8.060 8.125 8.144
8 8.072 8.010 8.097 8.153
9 8.066 8.067 8.055 8.059
10 8.089 8.064 8.170 8.086
11 8.058 8.098 8.114 8.156
12 8.147 8.116 8.116 8.018
;
proc cusum data=Oil;
xchart Weight*Hour /
nochart
mu0=8.100 /* target mean for process */
sigma0=0.050 /* known standard deviation */
delta=-1 /* shift to be detected */
h=3 /* cusum parameter h */
k=0.5 /* cusum parameter k */
scheme=onesided
outtable = Tabcusum
( drop = _var_ _subn_ _subx_ _exlim_
rename = ( _cusum_ = _subx_ _h_ = _uclx_ ) )
;
run;
proc shewhart data=Oil;
xschart Weight*Hour /
nochart
outtable = Tabxscht
( drop = _subx_ _uclx_ );
run;
data taball;
merge Tabxscht Tabcusum; by Hour;
_mean_ = _uclx_ * 0.5;
_lclx_ = 0.0;
run;
title;
proc print data=taball;
run;
ods graphics on;
title 'Cusum Chart for Mean and s chart';
proc shewhart table=taball;
xschart Weight * Hour /
nolimitslegend
ucllabel = 'h=3.0'
odstitle = title
markers
noctl
split = '/'
nolegend ;
label _subx_ = 'Lower Cusum/Std Dev';
run;