Control chart merupakan salah satu tools dari 7 tools untuk pengendalian proses.
Control Chart/Diagram Kendali
Control Chart disebut juga sebagai diagram Shewhart, diagram kontrol proses statistik (Statistical Process Control/SPC).
Diagram kontrol adalah diagram yang memeriksa bagaimana suatu proses berubah seiring waktu. Data dicatat dalam urutan kronologis. Diagram kontrol selalu memiliki garis tengah untuk rata-rata, garis atas untuk batas kontrol atas dan garis bawah untuk batas kontrol bawah. Garis-garis ini ditentukan dari data historis. Dengan membandingkan data saat ini dengan garis-garis ini, kita dapat menarik kesimpulan, apakah variasi proses konsisten (terkendali) atau tidak. Apakah hasil proses dapat diprediksi (dapat dikendalikan atau tidak (di luar kendali, dipengaruhi oleh suatu variasi). Alat pengumpulan dan analisis data serbaguna ini dapat digunakan di berbagai bidang dan dianggap sebagai salah satu dari tujuh piranti dasar pengendalian kualitas.
Cause-and-effect diagram (also called Ishikawa or fishbone diagrams): Mengindentifikasi kemungkinan-kemungkinan penyebab dari suatu kejadian atau masalahdan mengurutkan kemungkinan-kemungkinan tersebut menurut kategori tertentu.
Check sheet: Form yang terstruktur untuk mengumpulkan dan menganalisis data.
Control chart: Grafik yang digunakan untuk memonitor proses sebagai fungsi waktu. Perbandingan data saat ini dengan data-data sebelumnya untuk mendapatkan kesimpulan apakah data yang idapat konsisten dengan acuan yang dipakai atau bersifat tidak dapat diprediksi.
Histogram: Grafik untuk menunjukan distribusi frekuensi.
Pareto chart: Bar chart untuk melihat faktor mana yang lebih signifikan.
Scatter diagram: Grafik pasangan data untuk melihat hubungan antara sumbu x dan sumbu y.
Stratifikasi: Teknik untuk memisahlkan data dari berbagai sumber agar sehingga pola dari data dapat diamati.
Diagram kontrol variabel data terdiri dari nilai rata-rata data, nilai rata ditambah atau dikurangi beberapa kali nilai simpangan baku dari proses yang disebut sebagai UCL (upper control level) dan LCL (lower control level).
Dr. Walter A. Shewhart pada Tahun 1920 mengembangkan diagram kontrol dengan rumus umum sebagai berikut:
$$UCL = \mu_w + k \sigma_w$$$$Center Line = \mu_w$$$$LCL = \mu_w - k \sigma_w$$Shewhart Control Charts untuk variabel w mempunyai rata-rata nilai hasil pengukuran \(\mu_w\) dan simpangan baku \(\sigma_w\).
umumnya metode 3 sigma digunakan sebagai nilai k (k = 3).
\(\sigma_w\) adalah simpangan baku rata-rata yang diperoleh dari simpangan baku data m sebanyak n dirata-rata.
Bila \(\sigma^2\) adalah variansi dari probabilitas distribusi data, maka unbiased estimator untuk \(\sigma^2\) adalah sampel variansi yang diperoleh menggunakan persamaan berikut:
$$s^2 = \frac{\sum_{i=1}^n \left( x_i - \overline{x} \right)^2}{n-1}$$Namun s adalah simpangan baku sampel dan bukan unbiased estimator dari \(\sigma\). Bila diasumsikan distribusi data adalah normal, maka estimator aktual \(c_4\) . \(\sigma\) digunakan. Dimana \(c_4\) adalah konstanta yang nilainya tergantung pada ukuran sampel n. Tabel c4 tersedia di buku statistik dan dapat dihitung menggunakan persamaan berikut:
$$c_4 = \sqrt{\frac{2}{n-1}} \frac{ \left( \frac{n}{2}-1 \right)!} {\left( \frac{n-1}{2}-1 \right)!}$$Nilai \(c-4\) faktor untuk n = 10 adalah 0.9727.
Rata-rata atau nilai deviasi standar adalah \(c_4 . \sigma\)
Simpangan baku dari simpangan baku sampel adalah
$$\sigma_s = \sigma \sqrt{1 - c_4^2}$$UCL bisa juga dihitung dari
$$\bar{x} \pm 3s/c_4$$# import library yang diperlukan
import numpy as np
df=np.random.randn(100, 3) + 100
x=df[1,:]
import scipy as sc
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import pymc3 as pm
import arviz as az
import pandas as pd
import scipy.stats
import statsmodels.api as sm
Diagram kendali untuk pengukuran tunggal, ukuran sampel = 1, variabilitasnya dihitung dari selisih dari dua pengukuran yang berurutan.
$$MR_i = |x_i - x_{i-1}|$$di mana \(\bar{x}\) adalah rata-rata dari data, \(MR\) adalah rata-rata selisih antara dua pengamatan berurutan. Nilai \(d_2\) untuk \(n\) = 2 adalah 1,128.
Beikut adalah contoh pengukuran 10 data flowrate
df=pd.DataFrame([49.6,47.6,49.9,51.3,47.8,51.2,52.6,52.4,53.6,52.1])
df.columns=['Flowrate']
df
Perbedaan antar data flowrate adalah
R=np.diff(np.array(df).reshape(1,-1))
R=np.abs(R)
R
Nilai rata-rata flowrate adalah
X = df.mean()
X
Nilai rata-rata selisihnya adalah sebesar
MR=R.mean()
MR
Sehingga nilai UCL-nya adalah
UCL=X+((3*MR)/1.128)
UCL
UWL
UWL=X+((2*MR)/1.128)
UWL
LCL
LCL=X-((3*MR)/1.128)
LCL
LWL
LWL=X-((2*MR)/1.128)
LWL
Diagram kendali yang didapat adalah sebagai berikut
plt.figure(figsize=(12,4))
plt.plot(df,'C0o-')
plt.hlines(UCL,0,10, label='UCL', color='r')
plt.hlines(UWL,0,10, label='UWL', color='orange')
plt.hlines(X,0,10, label='Mean', linewidth=2.5)
plt.hlines(LWL,0,10, label='LWL', color='orange')
plt.hlines(LCL,0,10, label='LCL', color='r')
plt.legend(loc='center left')
Berikut adalah 100 data hasil pengukuran water content dalam biodisel:
import numpy as np
water_content=np.random.randint(485, 500, size=100)
water_content
Histogram 100 data tersebut ditampilkan pada Gambar di bawah ini
plt.hist(water_content, bins=20, density=True)
sns.kdeplot(water_content)
Data deskriptif statistik untuk 100 data tersebut dirangkum dalam tabel berikut:
pd.DataFrame(water_content).describe()
Dari data deskriptif statistik bisa digambarkan pada Boxplot di bawah ini. Terlihat bahwa nilai min 472.234661 merupakan outlier. IQ1 (25%) = 488.750000, Median = 492.000000 dan IQ3 (75%) = 496.000000
pd.DataFrame(water_content).plot(kind='box')
Control Chart dibuat dengan menggunakan nilai rata-rata sebagai garis horisontal di tengah,
UCL/upper control level, batas control atas : garis yang berwarna biru
$${\bar x} + {2\sigma}$$LCL/lower control level, batas control bawah
$${\bar x} - {2\sigma}$$.
UWL/upper warning level, batas peringatan atas :
$${\bar x} + {3\sigma}$$dan LWL/lower warning level :
$${\bar x} - {3\sigma}$$plt.figure(figsize=(12,4))
plt.plot(water_content,'bo-')
plt.hlines(water_content.mean()+3*water_content.std(),0,100, label='UCL', color='r')
plt.hlines(water_content.mean()+2*water_content.std(),0,100, label='UWL', color='orange')
plt.hlines(water_content.mean(),0,100, label='Mean', linewidth=2.5)
plt.hlines(water_content.mean()-2*water_content.std(),0,100, label='LWL', color='orange')
plt.hlines(water_content.mean()-3*water_content.std(),0,100, label='LCL', color='r')
plt.legend(loc='center left')
Dari segi aplikasi, control chart yang sebenarnya kita butuhkan untuk kasus di atas hanyalah batas kontrol atas (UCL) dengan nilai sebesar 500,sebagaimana disyaratkan dalam ASTM. Misalnya kita tetapkan untuk memberi batas warning atas 5 point sebelum angka maksimal yang diijinkan, maka UWL yang kita pasang aadalah 495. Sehingga untuk riil kontrol chart yang berguna untuk proses kita, kita bisa mengubah kontrol chart di atas sebagai berikut:
plt.figure(figsize=(12,4))
plt.plot(water_content,'C0-o', color='orange')
plt.hlines(500,0,100, label='UCL', color='r', linewidth=3)
plt.hlines(495,0,100, label='UWL', color='b', linewidth=3)
plt.hlines(water_content.mean(),0,100, label='Mean', linewidth=2.5)
plt.legend(loc='center left', fontsize=15)
EWMA (Exponentially Weighted Moving Average) adalah metode statistik untuk memonitoring proses menggunakan FIIR (first-order infinite impulse response) filter. FIIR filter membuat pengaruh data semakin menurun secara exponensial dengan berjalannya waktu namun tidak pernah mencapai angka nol.
Roberts (1959).
Parameter λ menentukan kecepatan data yang lebih lama dihitung ke statistik EWMA. Nilai A value of \(\lambda\) = 1 memberikan implikasi hanya data terbaru yang mempengaruhi EWMA. Jadi, semakin besar nilai λ (nilainya mendekati 1) akan membuat data terbaru lebih berpengaruh. Nilai λ yang kecil, mendekati 0, akan menyebabkan data yang lama lebih berpengaruh. Pada aplikasinya, biasanya nilai λ diatur antara 0.2 - 0.3. Lucas and Saccucci (1990) membuat tabel untuk memilih λ.
Diagram kendali EWMA untuk kadar air dalam biodiesel adalah sebagai berikut:
from pyspc import *
spc(water_content)+ewma()
CUSUM (or cumulative sum control chart) adalah teknik analisis sekuensial yang dikembangkan oleh E. S. Page dari University of Cambridge. CUSUM biasanya digunakan untuk mendeteksi perubahan.
Parameter $\theta$ disebut sebagai quality number yang mewakili distribusi probabilitas. Misalnya, nilai rata-rata digunakan sebagai \(\theta\) maka CUSUM bisa digunakan untuk mengamati perubahan mendadak pada data berbasis waktu.
George Alfred Barnard metode visualisasi CUSUM yang disebut V-mask chart untuk mendeteksi perubahan \(\theta\)
rumus yang digunakan pada CUSUM adalah
$$\S_{0} = 0$$
$$S_{n+1} = \max(0,S_{n}+x_n-\omega _n)S_{n+1}=\max(0, S_n+x_n-\omega_n)$$
Ketika S melebihi nilai batas yang ditentukan, perubahan nilai dideteksi. Untuk perubahan ke arah negatif fungsi min digunakan pada persamaan di atas.
Untuk mengases kinerja CUSUM digunakan average run length (A.R.L.) metric, yang didefinisikan: "the expected number of articles sampled before action is taken.
Diagram kendali CUSUM untuk kadar air dalam biodiesel adalah sebagai berikut
spc(water_content)+cusum()
Contoh bagan kendali untuk ketepatan kalibrasi timbangan biasanya dilakukan dengan perbandingan standar kilogram menggunakan timbangan presisi tinggi sebagai pembanding. Simpangan baku hasil pengukuran ini memperkirakan ketepatan timbangan. Kebutuhan akan pemantauan presisi ketepatan timbangan dimonitor untuk memeriksa:
Teknik pemantauan untuk standar deviasi kalibrasi dilacak dan dipantau menggunakan diagram kontrol untuk deviasi standar. Basis data dan batas kontrol diperbarui setiap tahun atau dua tahun sekali dan standar deviasi untuk setiap kalibrasi yang dijalankan pada siklus berikutnya dibandingkan dengan batas kontrol. Dalam hal ini, standar deviasi dikumpulkan untuk mendapatkan deviasi standar pengulangan dengan derajat kebebasan tertentu, dan batas kontrol dihitung pada tingkat signifikansi 1%. Bila didapati ada hasil yang berada di luar batas kontrol, hasil kalibrasi dibuang dan diulang. Dari interpretasi diagram kontrol bisa dilihat pola deviasi standar dari waktu ke waktu ketepatan timbangan secara bertahap. Temuan bisa mengarah pada keputusan untuk mengganti timbangan ini untuk kalibrasi akurasi tinggi.
Kalibrasi dilakukan dengan membandingkan 1 Kg anak timbangan uji dengan 1 Kg anak timbangan reference. Desain anak timbangan uji dan reference untuk kalibrasi biasanya sebagaimana Gambar di bawah ini
Desain kalibrasi dengan pola penurunan massa anak timbangan:
Prosedur control chart yang dimodifikasi digunakan untuk pengendalian presisi instrumen. Prosedur ini dirancang untuk diimplementasikan secara real time setelah baseline dan batas control instrumen yang diinginkan dibuat dari data deviasi standar dari pengukuran jangka pendek. Diagram kontrol berbeda digunakan untuk masing-masing instrumen, kecuali instrumen dengan tipe dan presisi yang sama, karena dapat dianggap sebagai satu instrumen.
Baseline diperoleh dari deviasi standar proses yang dikumpulkan dari keberulangan standar deviasi masing-masing \(s_k$ , $k = 1, , , ,K\), dengan derajat kebebasan \(v_k\) mempunyai standard deviasi sebagai berikut:
$${\large s}_1 = \sqrt{ \frac{1}{\nu} \sum_{k=1}^K \nu_k \, {\large s}_k^2 }$$dengan derajat kebebasan
$$\nu = \sum_{k=1}^K \nu_k \,\, .$$Batas kontrol atas biasanya digunakan untuk memonitor performa timbangan. Rumus Upper Control Limit adalah sebagai berikut
F tabel dicari dengan α biiasanya 0.01. $\nu$ adalah derajat kebebasan deviasi standar baru dan deviasi standar proses.
Berikut adalah data kalibrasi timbangan
df=pd.read_csv('/home/van/Pengajaran/01_Pengajaran_Online/Kemometrik/balance_calibration.csv')
df
import numpy as np
s=df['RESSTDEV']**2
s1=(np.sqrt(3.88))*(np.sqrt(s.mean())) # F(0.01,3,200)
print('s1 = ',s1)
sd=df['RESSTDEV']
mean_sd=sd.mean()
plt.figure(figsize=(12,4))
plt.plot(sd,'C0-o')
plt.hlines(s1,0,217, label='UCL', color='r')
plt.hlines(mean_sd,0,217, label='Mean', linewidth=2.5)
plt.legend(loc='lower left')
Nilai di luar batas control bisa jadi kebetulan dari noise, ketidakstabilan alat, kesalahan perlakuan sehingga perlu dibuang dan diulang untuk mengetahui kesalahan bersifat permanen atau tidak.
A. Penyebab yang tidak menjamin tindakan korektif (tetapi yang mengharuskan pengukuran saat ini dibuang) adalah:
B. Perubahan kinerja instrumen dapat disebabkan oleh:
Ulangi urutan pengukuran untuk menentukan apakah sinyal di luar kendali itu hanya kebetulan, kesalahan, atau apakah itu menandai perubahan permanen atau tren dalam proses.
Dengan proses presisi tinggi, yang ketidakpastiannya dapat dijamin, nilai baru harus ditetapkan ke item uji berdasarkan data pengukuran baru.
Periksa pola deviasi standar terbaru. Jika proses secara bertahap keluar dari kendali karena degradasi dalam instrumentasi atau artefak, instrumen mungkin perlu diperbaiki atau diganti.
Aplikasi praktis control chart untuk presisi dan akurasi, bisa dibuat berdasar kriteria yang ditentukan. Misalnya, kita memutuskan bahwa residu recovery maksimal yang diperbolehkan pada hasil pengukuran sediaan obat, berdasar farmakope, adalah +/- 10% dari yang tertera di etiket. Untuk kepentingan pengendalian, batas peringatan didasarkan pada kriteria rekoveri 5% dari nilai acuan. Dengan demikian untuk semua pengukuran mengacu pada rekoveri 100% dan sisanya/residu yang diperoleh maksimal sebesar 10%. Misalnya kriteria ini diterapkan pada penentuan kadar paracetamol dalam sediaan farmasi, dimana di etiketnya tertera kadar paracetamol 350 gr. Misalnya, data analisis kadar paracetamol dengan spektrofotometri UV dengan 3 kali pengulangan adalah sebagai berikut:
paracetamol=np.random.randint(340, 355,(50,3))
paracetamol
Kita harus menggunakan s-chart terlebih dahulu untuk menentukan apakah karakteristik distribusi proses stabil. Misalnya kita harus memperkirakan \(σ\) dengan menganalisis data yang sudah diperoleh sebelumnya. Misalkan kita memiliki sampel awal sebanyak \(m\), masing-masing tersusun dari \(n\) data, dan \(s_i\) adalah standar deviasi sampel ke-i. Maka rata-rata dari standar deviasi adalah
Kita akan menggunakan tabel c4 untuk perhitungan. Dengan \(\bar{s}/c_4\) sebagai unbiased estimator untuk σ maka diagram kontrol dapat dibuat dengan persamaan berikut:
Dengan langkah yang sama kita bisa membuat diagram kontrol untuk \(\bar{X}\) sebagai berikut:
Tabel untuk Control Chart
Diagram kendali \(\bar{X}\) dan \(\bar{S}\) untuk pengukuran paracetamol adalah sebagai berikut
import numpy as np
spc(paracetamol)+xbar_sbar()
spc(paracetamol)+sbar()
¯ Bila sampel relatif sedikit, misalnya kurang dari 10, kita bisa membuat rentang sampel untuk membuat diagram kontrol, bukan menggunakan simpangan baku.
Rentang sampel adalah perbedaan antara nilai pengamatan terbesar dan terkecil. Menurut Patnaik, 1946, ada hubungan statistik antara rata-rata rentang sampel untuk data yang terdistribusi normal dengan nilai $\sigma$, simpangan baku dari distribusi data. Hubungan ini hanya bergantung pada ukuran sampel, Rata-rata rentang, \(R\), adalah \(d_2 \sigma\) dimana nilai \(d_2\) merupakan fungsi n, sehingga estimator untuk \(\sigma\) adalah \(R /d_2\).
Misalnya \(R_1, R_2, R_3,...., R_k\) adalah rentang sampel k, rata-ratanya adalah
$$\bar{R} = \frac{R_1 + R_2 + ... + R_k} {k}$$Jadi, jika kita menggunakan \(\bar{x}\) sebagai estimator \(\mu\) dan \(R\over{d_2}\) sebagai estimator \(\sigma\), maka parameter untuk \(\bar{X}\) adalah
$$UCL = \bar{\bar{x}} + \frac{3}{d_2\sqrt{n}} \bar{R}$$$$\mbox{Center Line} = \bar{\bar{x}}$$$$LCL = \bar{\bar{x}} - \frac{3}{d_2\sqrt{n}} \bar{R}$$dengan persamaan \(A_2 = {3\over(d_2√n)}\) maka \(\bar{X}\) menjadi
$$UCL = \bar{\bar{x}} + A_2 \bar{R}$$$$\mbox{Center Line} = \bar{\bar{x}}$$$$LCL = \bar{\bar{x}} - A_2 \bar{R}$$Untuk menghitung batas kendali/kontrol kita perlu mengestimasi simpangan baku $w = R/\sigma$
Simpangan baku W adalah \(d_3\) yang merupakan fungsi sampel n.
Karena \(R = W \sigma\) maka simpangan baku R adalah \(\sigma_R = d_3 \sigma\) karena $\sigma$ tidak diketahui kita bisa mengestimasi
menggunakan persamaan:
Sehingga R chart dengan metode 3 sigma adalah
$$UCL = \bar{R} + 3\hat{\sigma_R} = \bar{R} + 3d_3\frac{\bar{R}}{d_2}$$$$\mbox{Center Line} = \bar{R}$$$$LCL = \bar{R} - 3\hat{\sigma_R} = \bar{R} - 3d_3\frac{\bar{R}}{d_2}$$Dengan \(D_3 = 1 - 3 d_3/d_2$ dan $D_4 = 1 + 3 d_3/d_2\)
$$UCL = \bar{R} D_4$$$$\mbox{Center Line} = \bar{R}$$$$LCL = \bar{R} D_3$$#Tabel Perhitungan X dan R
tabel=pd.DataFrame([2,3,4,5,6,7,8,9,10])
tabel.columns=['n']
tabel['A2']=[1.88,1.023,0.729,0.577,0.483,0.419,0.373,0.337,0.308]
tabel['D3']=[0,0,0,0,0,0.076,0.136,0.184,0.223]
tabel['D4']=[3.267,2.575,2.282,2.115,2.004,1.924,1.864,1.816,1.777]
tabel
Hubungan efisiensi penggantian R dengan s/c4 dipengaruhi oleh jumlah n
efisiensi=pd.DataFrame([2,3,4,5,6,10])
efisiensi.columns=['n']
efisiensi['Efisiensi Relatif']=[1,0.992,0.975,0.955,0.93,0.85]
efisiensi
Dengan demikian, sampel dengan ukuran di bawah 5 tidak akan memberikan perbedaan yang relatif besar.
Diagram kendali \(\bar{X}\) dan \(\bar{R}\) untuk pengukuran paracetamol adalah sebagai berikut
import numpy as np
spc(paracetamol) + xbar_rbar()
spc(paracetamol) + rbar() + rules()