การควบคุมคุณภาพการผลิต ด้วยเทคนิค 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 จะแตกต่างกันอย่างมีนันสำคัญ

รศ. ดร. เชฏฐเนติ ศรีสอ้าน
รศ. ดร. เชฏฐเนติ ศรีสอ้าน

Written by รศ. ดร. เชฏฐเนติ ศรีสอ้าน

รองอธิการบดีฝ่ายเทคโนโลยี มหาวิทยาลัยรังสิต

No responses yet