OC Curve for p Chart
/****************************************************************/
/* S A S S A M P L E L I B R A R Y */
/* */
/* NAME: SHWOC2 */
/* TITLE: OC Curve for p Chart */
/* PRODUCT: QC */
/* SYSTEM: ALL */
/* KEYS: Shewhart Charts, OC Curves, */
/* PROCS: SHEWHART PLOT */
/* DATA: */
/* */
/* REF: SAS/QC Software: Examples */
/* MISC: */
/* */
/****************************************************************/
options ps=60 ls=100 nodate;
data cans;
input sample noncnfm;
cards;
1 12
2 15
3 8
4 10
5 4
6 7
7 16
8 9
9 14
10 10
11 5
12 6
13 17
14 12
15 22
16 8
17 10
18 5
19 13
20 11
21 20
22 18
23 24
24 15
25 9
26 12
27 7
28 13
29 9
30 6
;
data cansrev;
set cans;
if sample=15 or sample=23 then delete;
proc shewhart data=cansrev;
pchart noncnfm*sample / subgroupn=50
nochart
outlimits=canlim2;
data ocpchart;
set canlim2;
keep beta fraction;
nucl=_limitn_*_uclp_;
nlcl=_limitn_*_lclp_;
do p=0 to 50;
fraction=p/100;
if nucl=floor(nucl) then
adjust=probbnml(fraction,_limitn_,nucl) -
probbnml(fraction,_limitn_,nucl-1);
else adjust=0;
if nlcl=0 then
beta=1 - probbeta(fraction,nucl,_limitn_-nucl+1) + adjust;
else beta=probbeta(fraction,nlcl,_limitn_-nlcl+1) -
probbeta(fraction,nucl,_limitn_-nucl+1) +
adjust;
if beta >= 0.001 then output;
end;
call symput('lcl', put(_lclp_,5.3));
call symput('mean',put(_p_, 5.3));
call symput('ucl', put(_uclp_,5.3));
run;
title "OC Curve for p Chart With LCL=&LCL, p0=&MEAN, and UCL=&UCL";
proc plot data=ocpchart;
plot beta*fraction='*' /
vaxis=0 to 1.0 by 0.1
haxis=0 to 0.5 by 0.05
vzero
hzero;
label fraction='Fraction Nonconforming'
beta ='Beta';
run;
title;