Saturday, February 7, 2026

Numworks (Python): Control Charts

 Numworks (Python): Control Charts



The following Python script develops the x-bar and R control charts.


Formulas used:


mean_average = Σ(mean of each sample)

range_average = Σ(range of each sample)



x-Bar Chart:

low = mean_average - a2 * range_average

high = mean_average + a2 * range_average


R chart:

low = d3 * range_average

high = d4 * range_average



Python script (done with Numworks): ctrlchart.py


from math import *

# control chart function

# run as a defined function

# HP 65 Stat Pac 2, 1975



def ctrlchart():

  #elements

  a2=[0,0,1.88,1.02,.73,.58,.48,.42,.37,.34,.31,.29,.27,.25,.24,.22,.21,.20,.19,.19,.18]

  d3=[0,0,0,0,0,0,0,.08,.14,.18,.22,.26,.28,.31,.33,.35,.36,.38,.39,.4,.41]

  d4=[0,0,3.27,2.57,2.28,2.11,2,1.92,1.86,1.82,1.78,1.74,1.72,1.69,1.67,1.65,1.64,1.62,1.61,1.6,1.59]

  # calculation

  meansum=0

  rangesum=0

  n=int(input("number of samples? "))

  m=int(input("sample size (2-20)? "))

  for i in range(n):

    x=[]

    for j in range(m):

      # adjust to show proper numbering

      s="x("+str(i+1)+","+str(j+1)+")? "

      p=eval(input(s))

      x.append(p)

    rangesum+=max(x)-min(x)

    meansum+=sum(x)/m

  rangeavg=rangesum/n

  meanavg=meansum/n

  lowmean=meanavg-rangeavg*a2[m]

  highmean=meanavg+rangeavg*a2[m]

  lowrange=d3[m]*rangeavg

  highrange=d4[m]*rangeavg

  print("x-bar chart")

  print("L: "+str(lowmean))

  print("H: "+str(highmean))

  print("range chart")

  print("L: "+str(lowrange))

  print("H: "+str(highrange))


Example 1:

5 samples (n = 5)
Sample size: 4  (m = 4)

Sample 1:  4.3, 4.2, 4.3, 5.0
Sample 2:  4.1, 4.1, 4.6, 3.6
Sample 3:  4.0, 4.5, 4.3, 3.7
Sample 4:  3.9, 4.7, 4.4, 5.1
Sample 5:  4.2, 5.2, 4.9, 5.3

x-Bar chart:
Low:  3.7046
High:  5.1354

R chart:
Low:  0
High:  about 2.2345

Example 2:

2 samples (n = 2)
Sample Size: 7 (m = 7)

Sample 1:  48, 58, 53, 56, 57, 59, 55
Sample 2:  56, 46, 48, 49, 63, 52, 51

x-Bar chart:  
Low:  47.33428571428571
High:  59.09428571428571

R chart:
Low:  1.12
High: 26.88

Source


“x-bar and R Control Charts”. HP 65 Stat Pac 2. Hewlett Packard. 1975. pp. 98 – 101



Eddie


All original content copyright, © 2011-2026. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.