Select Your Region
Americas
Europe
Middle East & Africa
Asia Pacific
![]() |
/****************************************************************/ /* S A S S A M P L E L I B R A R Y */ /* */ /* NAME: SHWQCHT3 */ /* TITLE: Q Charts for Process Means */ /* PRODUCT: QC */ /* SYSTEM: ALL */ /* KEYS: Shewhart Charts, Short Run Process Control, Q Chart,*/ /* PROCS: SHEWHART */ /* DATA: */ /* */ /* REF: Quesenberry, C. P. (1991). "SPC Q Charts For Start- */ /* Up Processes and Short or Long Runs" Journal of */ /* Quality Technology, Vol. 23, No. 3, pp. 213-224. */ /* */ /* NOTE: See Example 3, pg. 219 of above Reference. */ /* */ /****************************************************************/ options ps=60 ls=80 nodate; /*************************************************************/ /* */ /* The following data is 20 samples of size 5. The first 12 */ /* samples have a mean of 10 and standard deviation of .01. */ /* The last 8 samples have the same standard deviation, but */ /* the mean has increased to 10.01. */ /* */ /* The first plot assumes the parameters are known, while */ /* the second plot assumes the parameters are unknown. */ /* Comparing the plots shows how each reacts to a shift */ /* in the mean. */ /* */ /*************************************************************/ data sample; seed = 27951; do i = 1 to 20; subgrp = i; do j = 1 to 5; if ( i < 13 ) then do; x = 10 + .01*rannor(seed); end; else do; x = 10.01 + .01*rannor(seed); end; output; end; end; run; /****************************************/ /* Case I: */ /* Assume mu and sigma are known. */ /* mu = 10, sigma = .01 */ /****************************************/ /****************************************/ /* This proc call calculates subgroup */ /* means and standard deviations. */ /****************************************/ proc shewhart data=sample; xchart x*subgrp / nochart outhistory = hist1 stddeviations; run; data qchart1; set hist1; if ( _n_ < 13 ) then do; group = 'Mean of 10 '; gcolor = 'yellow'; end; else do; group = 'Mean of 10.01'; gcolor = 'red'; end; q = sqrt(xn)*( xx - 10 ) / .01; run; title 'Q-Chart for Process Mean (Parameters Known)'; symbol1 v=dot h=.5 c=white; proc shewhart data=qchart1; irchart q*subgrp (group) / mu0 = 0 sigma0 = 1 czones = yellow cframe = gray cinfill = blue llimits = 1 xsymbol = 'CL=0' blockpos = 2 cblockvar = gcolor ndecimal = 0 nolimitslegend novangle nochart2; label q = 'Standardized Value'; label subgrp = 'Observation Number'; run; /****************************************/ /* Case II: */ /* Assume mu and sigma are unknown. */ /****************************************/ data qchart2; set hist1; retain lgmean lsum ls2sum; if ( _n_ < 13 ) then do; group = 'Mean of 10 '; gcolor = 'yellow'; end; else do; group = 'Mean of 10.01'; gcolor = 'red'; end; if (_n_ = 1 ) then do; sum = xx; gmean = xx; s2sum = xs**2; end; else do; sum = lsum + xx; gmean = sum / _n_; s2sum = ls2sum + (xn - 1)*xs**2; s2pi = s2sum / ((xn - 1)*_n_); wi = sqrt( ((xn)*(_n_- 1 )*xn)/(_n_*xn ) ) * (xx - lgmean)/sqrt(s2pi); q = probit( probt(wi, (_n_-1 )*xn ) ); output; end; lgmean = gmean; lsum = sum; ls2sum = s2sum; run; title 'Q-Chart for Process Mean (Parameters Unknown)'; symbol1 v=dot h=.5; proc shewhart data=qchart2; irchart q*subgrp (group) / mu0 = 0 sigma0 = 1 czones = yellow cinfill = blue cframe = gray llimits = 1 xsymbol = 'CL=0' haxis = 0 to 20 by 2 blockpos = 2 cblockvar = gcolor ndecimal = 0 nolimitslegend novangle nochart2; label q = 'Standardized Value'; label subgrp = 'Observation Number'; run; goptions reset=all;