Statistical Process Control di Python
(timothyfraser.com)- Memperkenalkan cara menerapkan Statistical Process Control (SPC) dengan Python untuk memahami variasi kualitas produk dari waktu ke waktu dan kapan intervensi diperlukan
- Menggunakan
pandas,plotnine, danscipyuntuk pemrosesan data, visualisasi, dan perhitungan statistik - Menggunakan data pemandian air panas dari Prefektur Kagoshima, Jepang, sebagai contoh untuk menganalisis suhu, pH, dan kandungan sulfur sebagai indikator kontrol kualitas
- Menggunakan statistik subgrup dan peta kendali (X-bar, S, dan moving range chart) untuk menilai stabilitas proses dan mendeteksi outlier
- Menyajikan prosedur untuk mendiagnosis kondisi proses secara visual dan mendukung keputusan perbaikan berbasis data
Gambaran umum Statistical Process Control dengan Python
- Statistical Process Control (SPC) adalah pendekatan statistik untuk mengukur variasi kualitas produk dan menentukan kapan intervensi diperlukan
- Di Python,
plotninedigunakan untuk visualisasi,pandasuntuk manipulasi data, danscipyuntuk perhitungan statistik
- Di Python,
- Dalam praktik ini, konsep SPC diterapkan melalui kasus kontrol kualitas air pemandian air panas
- Suhu, pH, dan kandungan sulfur pada pemandian air panas ditetapkan sebagai indikator kualitas utama
Paket dan fungsi buatan pengguna
- Paket yang diperlukan:
pandas,plotnine,scipy - Fungsi buatan pengguna diimpor dari direktori
functions/di repositori GitHubfunctions_distributions.py: fungsi reliabilitas dan distribusifunctions_process_control.py: fungsi untuk kontrol proses
- Tambahkan direktori fungsi ke path Python dengan
sys.path.append('functions'), lalu lakukanimport
Kasus: kontrol kualitas pemandian air panas di Jepang
- Pemandian air panas Jepang (onsen) merupakan sumber daya wisata utama bagi ekonomi lokal, dan suhu, pH, serta kandungan sulfur menjadi standar kualitasnya
- Standar suhu: Extra Hot(>42°C), Hot(41~34°C), Warm(33~25°C)
- Standar pH: Acidic(pH<3) ~ Alkaline(pH>8.5)
- Standar sulfur: diklasifikasikan sebagai pemandian sulfur jika kandungan sulfur 1mg/kg atau lebih
- Data pemandian air panas dari Prefektur Kagoshima dianalisis selama 15 bulan dengan 20 kali sampling setiap bulan untuk melihat variasi kualitas
Memuat data dan statistik dasar
- Memuat file
onsen.csvlalu memeriksa data suhu, pH, dan kandungan sulfur - Menghitung rata-rata (mean) dan simpangan baku (sd) dengan fungsi
describe()- Contoh hasil: rata-rata 44.85°C, simpangan baku 1.99°C
- Nilai statistik ini menjadi indikator dasar untuk memahami pusat dan variasi proses
Visualisasi gambaran proses
- Menggunakan
plotnineuntuk memvisualisasikan distribusi suhu dari waktu ke waktu dengan boxplot dan sebaran titik- Garis tengah menunjukkan rata-rata keseluruhan, sehingga distribusi tiap titik waktu bisa dibandingkan
- Histogram menampilkan distribusi suhu keseluruhan untuk melihat pusat proses dan lebar variasinya
Menghitung statistik subgrup
- Setiap titik waktu (
time) dikelompokkan sebagai subgrup untuk menghitung rata-rata(xbar), rentang(r), dan simpangan baku(sd)- Contoh: rata-rata grup pertama 44.635°C, rentang 4.2°C
- Menghitung σₛ (simpangan baku dalam subgrup) dan standard error (se) untuk menetapkan batas atas dan bawah (±3σ)
- Dengan ini, stabilitas proses dari waktu ke waktu dapat dievaluasi
Statistik proses keseluruhan
- Semua grup digabungkan untuk menghitung rata-rata total(xbbar), rata-rata rentang(rbar), dan rata-rata simpangan baku(sdbar)
- Contoh: xbbar 44.85, rbar 7.26, sdbar 1.94
- Dengan membandingkannya terhadap σₜ (simpangan baku total), variasi di dalam dan antarproses dapat dipahami
Peta kendali (X-bar dan S chart)
- X-bar chart: menampilkan rata-rata tiap subgrup pada sumbu waktu
- Garis tengah: rata-rata keseluruhan, batas atas dan bawah: ±3σ
- Area bayangan menunjukkan rentang batas kendali
- Jika melewati batas kendali atau muncul pola non-acak, ada kemungkinan anomali proses
Pemeriksaan pembelajaran: visualisasi proses pH
- Menggunakan fungsi
ggprocess()yang sama untuk membuat chart gambaran proses bagi data pH- Membandingkan garis rata-rata dan distribusi tiap titik waktu secara visual
Moving range chart (n=1)
- Jika hanya ada nilai pengukuran individual, gunakan moving range
- Variabilitas diperkirakan dengan menghitung selisih absolut antar pengukuran berurutan
- Menghitung rata-rata moving range (
mrbar), batas atas (upper), dan batas bawah (lower=0) - Moving range chart berguna untuk memantau variasi proses berdasarkan data individual
Kesimpulan
- Dengan Python, dapat dibuat gambaran proses, statistik subgrup, dan moving range chart
- Melalui alat SPC, stabilitas proses dan ada tidaknya anomali dapat didiagnosis secara visual
- Analisis ini dapat dimanfaatkan untuk peningkatan kualitas dan pengambilan keputusan berbasis data
1 komentar
Komentar Hacker News
Ini mengingatkanku pada proyek lama
Kami berhasil mengganti ribuan detektor anomali deret waktu berbasis deep learning yang kompleks di sebuah perusahaan FANG dengan model kontrol proses statistik (nonparametrik, semiparametrik)
Model baru memiliki jumlah parameter pelatihan 3–4 digit lebih sedikit, dan cukup sederhana sehingga tim beranggotakan 3–4 orang bisa mengelola ribuan stream
Model deep learning sulit di-debug dan tidak transparan untuk diinterpretasikan, jadi terlalu sulit dikelola
Untuk tim kecil, aku masih sangat merekomendasikan pendekatan berbasis statistik
Hanya saja, karena alasan politik, pilihan seperti ini belum tentu baik untuk karier. Orang-orang yang sudah memasang taruhan besar tidak suka jika muncul bukti yang bertentangan
Karena alasan seperti inilah aku skeptis terhadap euforia AI saat ini
Dalam banyak kasus, metode klasik yang sudah ada jauh lebih stabil dan efisien, jadi aku tidak paham kenapa perusahaan sengaja memilih pendekatan yang rumit dan tidak stabil
Perusahaan membanggakan model ML yang keren untuk konferensi, tetapi operator di lapangan sangat tidak puas karena kurangnya akurasi dan interpretabilitas
Jadi aku menulis ulang kode berdasarkan aturan matematis sederhana yang benar-benar dipakai operator, dan hasilnya jauh lebih baik
Cocok untuk OCR, tetapi kurang efektif untuk tugas klasifikasi
Sering kali hasil yang lebih baik didapat dengan pencahayaan yang bagus dan fokus pada teknik computer vision tradisional
Aku juga paham soal masalah politik dalam adopsi teknologi. Karena itu aku biasanya mengusulkan pendekatan hibrida yang menggabungkan deep learning dan vision tradisional
Sepertinya sebagian besar parameter itu tidak stabil atau saling berkorelasi
Dulu aku mengambil sertifikasi Lean Six Sigma Green Belt dan mengerjakan proyek kontrol proses statistik untuk proses back office bank investasi dengan Minitab
Sekarang rasanya tidak ada lagi yang ingat Minitab. Semua orang cuma pakai Python
Sampai sekarang masih terus diperbarui, dan juga punya antarmuka Python → mtbpy package
Tool open source hanya mendukung sampai x-bar/S/R, dan kurang pada fitur lanjutan seperti analisis multivariat
Beberapa tahun lalu aku menulis panduan praktis untuk pemula SPC
Mungkin bisa jadi referensi → Statistical Process Control: A Practitioner’s Guide
Pada dataset kecil seperti data klinis, statistika klasik masih tetap inti utamanya
Pengumpulan dan penyelarasan metadata itu sulit, dan dalam penelitian penyakit langka sering kali bahkan machine learning atau regresi pun susah diterapkan
Data dunia nyata tidak pernah benar-benar bersih
Sebagian besar waktu habis untuk mengelola kualitas data
Outlier bisa disebabkan oleh kesalahan pengukuran atau perubahan proses, dan untuk memahaminya dibutuhkan intuisi tentang proses itu sendiri
Karena itu, alat yang matang dan memungkinkan visualisasi serta eksplorasi cepat sangat penting
Membuat chart SPC Cpk sendiri dengan kode itu tidak efisien
SPC memang alat yang sangat hebat
Jauh lebih sederhana dan bekerja lebih baik daripada toolkit lain yang lebih rumit
Banyak typo
Aku sangat suka desain dan nuansa halaman ini