DataRockie

วิธีตรวจจับ Outliers ในข้อมูลง่ายๆด้วย Boxplot และ IQR

วิธีการตรวจจับ outlier ง่ายๆด้วยโปรแกรม Excel

หน้าที่สำคัญของ data analyst คือการทำความสะอาดข้อมูลให้พร้อมสำหรับทำงาน โดยปัญหาหลักๆของ data ที่เราเจอบ่อยๆคือเรื่อง missing values และ outliers บทความนี้เราจะอธิบายว่า outliers คืออะไร และแนะนำเทคนิคในการ flag และ remove ค่า outliers ด้วยโปรแกรม Excel ง่ายๆใน 4 ขั้นตอน

ดาวน์โหลดไฟล์ตัวอย่าง Excel สำหรับบทความนี้ได้ที่นี่

Excel template สำหรับ flag outliers ในข้อมูล

Outlier คืออะไร

Outlier (มีหลายชื่อ เช่น anomaly, extreme value) คือ data points ที่มีค่าสูงหรือต่ำกว่า data points ส่วนใหญ่ในชุดข้อมูลหนึ่งๆอย่างมาก เช่น ส่วนสูง 210 cm คือค่า outlier สำหรับคนไทย เพราะเราแทบไม่เคยเห็นคนไทยสูงเกิน 2 เมตรเลย เป็นต้น อ้างอิงสถิติจากเว็บไซต์ sizethailand ส่วนสูงเฉลี่ยชายและหญิงชาวไทย อายุ 16-25 ปี อยู่ที่ 171 cm และ 159 cm ตามลำดับ

วิธีการตรวจสอบ Outlier ในข้อมูลจะมีอยู่สองวิธีหลักๆคือ

  • สร้างชาร์ท box and whisker หรือเรียกสั้นๆว่า boxplot
  • คำนวณค่าสถิติด้วยสูตร quartile

ทั้งสองวิธีด้านบนมีความเกี่ยวข้องกัน ปกติแอดใช้ทั้งสองวิธีนี้คู่กันเสมอ หัวข้อถัดไปแอดจะอธิบายการทำ outlier detection ง่ายๆใน Excel

Boxplot

วิธีที่ง่ายที่สุดในการ detect outliers คือการสร้างชาร์ท boxplot (data visualization) เปิดไฟล์ Excel ตัวอย่างของเราขึ้นมาและใช้เม้าส์ลากไฮไลท์ cell B2:B26 คลิกที่แท๊บ Insert และเลือกชาร์ท Box and Whisker

Boxplot จะแสดง outliers เป็นจุดตามรูปด้านล่าง ในทางสถิติเรามีสูตรคำนวณช่วง upper/ lower bound สำหรับ flag outliers โดยใช้สูตรหา quartile ที่เราจะอธิบายในหัวข้อต่อไป

Boxplot ในโปรแกรม Excel

Quartile Function

ฟังชั่นสถิติที่เราใช้ในการ flag outliers ใน Excel คือ QUARTILE.INC() โดยฟังชั่นนี้รับสอง arguments คือ range ของข้อมูล (B2:B26) และตำแหน่ง quartile ที่เราต้องการ (0, 1, 2, 3, 4) โดยที่เลข 0=minimum, 1=first quartile, 2=second quartile, 3=third quartile และ 4=maximum ตามลำดับ

จริงๆ quartile/ quarter เทียบเท่ากับคำว่า “ไตรมาส” ในภาษาไทย หนึ่งปีมี 4 ไตรมาส เดือนมกราคม-มีนาคมคือ 1st quartile (25%) i.e. ผ่านมา 25% ของปีแล้ว เดือนเมษยน-มิถุนายนคือ 2nd quartile (25%) เป็นต้น ในทางสถิติเราเรียก 2nd quartile หรือวันที่ 30 มิถุนายนว่าค่า median หรือจุดที่แบ่งวันที่ในปีเป็นสองส่วนเท่าๆกัน

Step 1 – คำนวณ Quartile

เปิด Excel ขึ้นมาไปที่หน้า worksheet ข้อมูลดิบของเราอยู่ที่คอลัมน์ B ขั้นตอนแรกให้เราเขียนสูตร QUARTILE.INC() ใน cell M3:M7 เพื่อคำนวณค่า min, first, second, third และ max ของข้อมูลชุดนี้ก่อน

=QUARTILE.INC($B$2:$B$26, 0)
=QUARTILE.INC($B$2:$B$26, 1)
=QUARTILE.INC($B$2:$B$26, 2)
=QUARTILE.INC($B$2:$B$26, 3)
=QUARTILE.INC($B$2:$B$26, 4)

Note – การหาค่า quartile ระยะต่างๆของข้อมูลถือว่าเป็น exploratory data analysis รูปแบบหนึ่ง (EDA)

Step 2 – คำนวณ IQR

ขั้นตอนที่สอง คือการคำนวณ IQR ย่อมาจาก Interquartile Range ด้วยสูตร Q3 – Q1 (Q3 = third quartile, Q1 = first quartile ที่เราคำนวณมาใน step แรก) จากตัวอย่างของเราจะได้ IQR = 179 – 159 = 20

IQR = Q3 - Q1

Note – IQR ในทางสถิติคือค่าที่เราใช้วัดการกระจายตัวของข้อมูลหรือ measure of variability ถ้า IQR มีค่าต่ำแปลว่าข้อมูลกระจายตัวน้อย หรือถ้า IQR มีค่าสูงแปลว่าข้อมูลกระจายตัวมาก

Step 3 – คำนวณ Upper/ Lower Bound

ขั้นตอนที่สามคือการสร้าง upper/ lower bound เพื่อใช้ตัดค่า outliers เราสามารถคำนวณ upper/ lower bound ด้วยสูตรด้านล่าง สังเกตในสูตร cell M12:M13 เราใช้ค่า IQR ที่เราคำนวณได้ในขั้นตอนที่สองคูณ 1.5 (เราสามารถเปลี่ยน factor 1.5 เป็น 3.0 เพื่อสร้าง bound ที่ลึกขึ้นในการ flag extreme outliers)

Upper Bound = Q3 + 1.5*IQR
Lower Bound = Q1 - 1.5*IQR

Step 4 – ติด Flag Outliers

พอเรารู้ upper/ lower bound แล้ว ที่เหลือก็แค่เขียน IF เพื่อสร้างเงื่อนไขง่ายๆ โดย outliers คือ data points ที่อยู่สูงกว่า upper bound หรือต่ำกว่า lower bound ในคอลัมน์ C เราสามารถเขียนสูตร IF() + OR() เพื่อ flag outliers ในข้อมูลของเรา โดย “Y” = outlier, “N” = normal data

IF(OR(B2 > Upper Bound, B2 < Lower Bound), "Y", "N")

Outliers ทั้งสี่ตัวในชาร์ท boxplot ด้านบนที่ถูก flag ด้วยวิธีของเราคือ 99, 212, 250 และ 302

ความสัมพันธ์ระหว่าง Quartile และ Boxplot

อ่านมาถึงตรงนี้ แอดต้องบอกว่าจริงๆแล้ว boxplot คือการ visualize quartile ของข้อมูล โดยขอบกล่องด้านล่างของ boxplot คือ Q1 เส้นตรงทึบตรงกลางกล่องคือ Q2 และขอบกล่องด้านบนคือ Q3 ส่วนความยาวของกล่อง boxplot คือ IQR (คำนวณจาก Q3 – Q1) ที่ใช้วัดการกระจายตัวของข้อมูลนั่นเอง

Boxplot คือการนำเสนอ quartile ระยะต่างๆ

สรุป

วิธีการทำ outlier detection ด้วยโปรแกรม Excel ง่ายๆในสี่ขั้นตอน

  1. คำนวณค่า min, first, second, third quartile และ max ของข้อมูล
  2. คำนวณค่า IQR จากสูตร Q3 – Q1
  3. คำนวณ upper bound และ lower bound (threshold) ที่เราใช้ flag outliers โดยใช้สูตร Q3 + 1.5*IQR และ Q1 – 1.5*IQR ตามลำดับ
  4. flag outliers ถ้า data point นั้นมีค่าสูงกว่า upper bound หรือต่ำกว่า lower bound

วิธีง่ายที่สุดในการจัดการ outliers คือการลบมันทิ้งเลย ใน Excel เราแค่เรียงข้อมูลจากน้อยไปมาก (หรือมากไปน้อย) แล้วลบ data points ที่เรา flag เป็น outliers ด้วยสูตรที่เราเรียนวันนี้ได้เลย ทำไมมันง่ายอย่างนี้ 😛

3 responses to “วิธีตรวจจับ Outliers ในข้อมูลง่ายๆด้วย Boxplot และ IQR”

  1. Waris Kanchitnurak Avatar
    Waris Kanchitnurak

    ขอบคุณครับ

  2. ขอบคุณมากครับ

  3. ขอบคุณมากครับ

Leave a Reply