การควบคุมคุณภาพการผลิต ด้วยเทคนิค ANOVA (ด้วยภาษา Python)
อยากจะใช้เวทีนี้ พูดคุย ความรู้สถิติเบื้องต้น ที่เดิมจะต้องพึ่งพา ซอฟแวร์ลิชสิทธิ์ อย่างเช่น SPSS ซึ่ง วันนี้ผมอยากนำเสนอ วิธีใหม่ แบบไม่มีค่าใช้จ่าย ด้วยการวิเคราะห์ข้อมูล ด้วยภาษาไฟธอน
ตัวอย่างที่ 1 วิศวกรที่ทำหน้าที่ควบคุมคุณภาพของบริษัทผลิต Harddisk แห่งหนึ่งต้องการทดสอบ Bearing จาก Supplier 5 บริษัท เพื่อคัดเลือกว่า Bearing จากบริษัท (Brand) ใด ที่เมื่อประกอบเข้ากับชุด มอเตอร์ขับแล้วเกิดการสั่นสะเทือน (Vibration) น้อยที่สุด เนื่องจากปัจจัยที่สำคัญของคุณภาพ Harddisk คือการสั่นสะเทือน หรือ Noise ขณะทำงานของ Harddisk เขาจึงได้ออกแบบการทดลองโดยมีการสุ่มตัวอย่างมอเตอร์มา 30 ตัว และแบ่งออกเป็น 5 กลุ่มๆละ 6 ตัว โดยแต่ละกลุ่มก็ใช้กับ Bearing ตัวอย่างจากบริษัทเดียวกัน เมื่อประกอบเข้ากับมอเตอร์และเริ่มทำงานแล้ว เขาได้ทำการการวัดความสั่นสะเทือนของมอเตอร์ และได้ค่าออกมาดังตาราง ให้ทำการทดสอบว่า Bearing จากทั้ง 5 บริษัท (Brand) นั้นให้ผลการสั่นสะเทือนต่างกันหรือไม่
ตารางที่ 1: ค่าความสั่นสะเทือนของมอเตอร์ เมื่อใช้ Bearing จากแต่ละบริษัท
ขั้นตอนที่ 1: เปิด colab ขึ้นมา Click บน สมุดบันทึกใหม่ ทำการเพิ่ม code ในช้องแรก เพื่อทำการอ่านไฟล์
from google.colab import files
upload = files.upload()
จากนั้นกด Run จะเห็นว่า จะมี window ที่รอรับไฟล์ คลิกบน Chosse Files เพื่อเลือก ไฟล์ชื่อ hard_disk_anova_test.xlsx ดังรูป
ทำการอ่านไฟล์ excel 4 แรก ดังภาพต่อไปนี้
จากนั้นให้ ตั้งสมมุติฐาน
Ho : ค่าเฉลี่ยความสั่นสะเทือนของมอเตอร์อันเนื่องมาจากการใช้ Bearing ต่าง Brand ทั้ง 5 Brand ไม่แตกต่างกัน
H1 : ค่าเฉลี่ยความสั่นสะเทือนของมอเตอร์อันเนื่องมาจากการใช้ Bearing ต่าง Brand ทั้ง 5 Brand แตกต่างกัน อย่างน้อยคู่หนึ่ง
ถ้าเขียนเป็นภาษา Statistic จะได้ดังนี้
Ho : m1=m2=m3=m4=m5
Ha : ระดับความสั่นสะเทือนแตกต่างอย่างน้อย 1 คู่
จากขั้นตอนการทดลองจะเห็นว่าเงื่อนไขการสุ่มตัวอย่างโดยที่มอเตอร์ที่ใช้ทดสอบนั้นก็เป็นมอเตอร์ประเภทเดียวกัน และเป็นชนิดที่ใช้ในการผลิตทั่วไป
กำหนดให้ เป็นการแจกแจงแบบปกติแล้วก็ผ่านทั้ง 5 กลุ่มข้อมูล และค่า Standard deviation ก็ถือว่าไม่มีความแตกต่างกันอย่างมีนัยสำคัญ
ถ้ากำหนดให้ค่าระดับนัยสำคัญ (Significant level ) a = 0.05 ให้ทำการวิเคราะห์ว่า Bearing ทั้ง 5 Brand ดังกล่าวให้ค่าระดับความสั่นสะเทือนแตกต่างกันหรือไม่?ฃ
ขั้นตอนที่ 2: ทำการ Transform ข้อมูล ให้เป็น ตารางแบบ 2x2 โดย ประกอบด้วยตัวแปรอิสระ และ ตัวแปรตามแบบ ratio scale เพื่อให้สามารถใช้ one-way ANOVA ได้
จากนั้น ทำการให้ชื่อคอลัมน์ ดังรูป เพื่อใช้ในการอ้างอิงต่อไป โดยกำหนดให้ ตัวแปรอิสระชื่อ Band และ ตัวแปรตาม ชื่อ Vibration ดังรูป
ขั้นตอนที่ 3: ลองคำนวณหา สถิติพรรณนา ด้วยคำสั่ง describe() ด้วยคำสั่ง groupby เพื่อดูจาก mean, std และอื่นๆ
เพื่อให้เห็นภาพความแตกต่างของค่าเฉลี่ย เราจะใช้ seaborn library เพื่อนำเสนอภาพกราฟแท่งแสดงการกระจายตัวของข้อมูลในแต่ละ Brand
จากนั้น ทำการแสดงค่าเฉลี่ย (Mean) แต่ละแท่งเพื่อแสดงความแตกต่างของค่าเฉลี่ย
ขั้นตอนที่ 4: จากรูปแสดงให้เห็นว่า มีความแตกต่างกันอย่างมีนัยสำคัญแน่นอน เพื่อจะให้แนใจ เราจะ ทำการรัน One-way Anova ด้วย statsmodels library
ขั้นตอนที่ 5: จากค่า P < 0.05 แสดงว่า Sig เราจึงปฏิเสธ H0 และยอมรับ H1 แสดงให้เห็นว่า ค่าเฉลี่ยความสั่นสะเทือนของมอเตอร์อันเนื่องมาจากการใช้ Bearing ต่าง Brand ทั้ง 5 Brand แตกต่างกัน อย่างน้อยคู่หนึ่ง แต่ไม่รู้ว่าคู่ไหนบ้าง จึงจำเป็นต้องทำ Post hoc analysis โดยใช้ Turkey ดังภาพ
จากรูปแสดงให้เห็นว่า คู่ 1,2 คู่ 2,3 คู่ 2,5 และ คู่ 4,5 จะแตกต่างกันอย่างมีนันสำคัญ