ประมาณค่าฝุ่น PM 2.5 ในกรุงเทพฯ ด้วยเทคนิค IDW
ไม่กี่สัปดาห์ก่อน กรุงเทพฯ ก็ได้ประสบพบเจอปัญหาฝุ่น PM 2.5 อีกครั้ง แน่นอนว่าเมืองใหญ่คนเยอะก็ย่อมมีการตื่นตัวสูงเป็นธรรมดา หนึ่งในสิ่งที่สะท้อนออกมาก็คือบัญชีทวิตเตอร์ @BangkokAQI ที่ทวีตภาพสรุปสถานการณ์ฝุ่นในพื้นที่ต่างๆ ทุก 3 ชั่วโมง ดังเช่นทวีตต่อไปนี้
ดัชนีคุณภาพอากาศ (AQI): 90 💛
— ☁️ Bangkok AQI 🔶 (@BangkokAQI) October 2, 2019
💛 คุณภาพปานกลาง
💛 Moderate pic.twitter.com/DrxVdzqrPP
แม้ผลลัพธ์จะออกมาสีสันสดใสสวยงาม อย่างไรก็ตามหากดูรายละเอียดภาพให้ดีแล้ว ก็คงปฏิเสธไม่ได้ว่ามันมีความผิดแผกแปลกไปจากธรรมชาติและการรับรู้ดั้งเดิมของเราอยู่มาก เช่นในช่วงข่าวฟ้าฝนพยากรณ์เรามักเห็นเส้นความกดอากาศตีวงโค้งเนียน ต่างจากภาพในทวีตที่แม้แต่ละเขตจะมีขอบที่เบลอ แต่เมื่อถอยออกมาดูแล้ว จะพบว่าเส้นต่างๆ เป็นเส้นตรงพร้อมมุมองศาชัดเจน
ที่เป็นเช่นนี้ก็เพราะว่ารูปดังกล่าวถูกลากเส้นแบ่งแบบแผนภาพ Voronoi ซึ่งมีหลักการคือ เลือกจุดศูนย์กลางแทนเขตข้อมูลมาจำนวนหนึ่ง (เรียกจุดเหล่านั้นว่า site) หลังจากนั้นแผ่อาณาเขตจากแต่ละจุดออกมาเป็นวงกลมเรื่อยๆ ด้วยอัตราเร็วเท่ากัน เมื่ออาณาเขตอย่างน้อย 2 อาณาเขตมาชนกันก็ให้หยุดแผ่ตรงขอบเขตนั้น ทำซ้ำการแผ่อาณาเขตไปเรื่อยๆ จนกระทั่งแผ่อาณาเขตครบทั้งแผนภาพและถึงจุดสมดุล (เรียกแต่ละอาณาเขตที่สมดุลแล้วว่า cell)
ปริมาณฝุ่น PM 2.5 ในกรุงเทพฯ ผ่านแผนภาพ Voronoi
อันที่จริงแล้วการวาดภาพแบ่งเขตฝุ่นด้วยแผนภาพ Voronoi คงไม่ใช่ตัวเลือกที่ดีเท่าไรนัก เพราะเราตีความให้ทุกจุดในแต่ละ cell มีค่าฝุ่นค่าเดียวกันหมด แม้ว่าจุดนั้นๆ จะห่างไกลจาก site แค่ไหนก็ตาม หากเรามีเครื่องมือวัดฝุ่นแบบเคลื่อนที่ เมื่อออกไปวัดฝุ่นในจุดที่อยู่ขอบ cell ก็มีโอกาสสูงมากที่จุดนั้นจะวัดค่าฝุ่นได้แตกต่างจากค่าฝุ่นจาก site นั้นๆ
เช่นนั้นแล้วเราจะมีวิธีประมาณค่าฝุ่นที่ดีกว่าวาดแผนภาพเช่นนี้หรือเปล่า? ก็ตอบได้ทันทีเลยว่ามี และมีหลากหลายวิธีมากๆ ด้วย กลุ่มเทคนิดการประมาณค่าตามพื้นที่เช่นนี้เรียกว่า multivariate interpolation โดยที่มีแผนภาพ Voronoi เป็นหนึ่งในเทคนิคพื้นฐาน (เทคนิคเพื่อนบ้านใกล้สุด)
สำหรับวิธีอื่นที่สามารถประมาณค่าและแสดงผลข้อมูลได้ (น่าจะ) ให้ผลลัพธ์ดูดีกว่าเทคนิคเดิมๆ คือการทำ invert distance weighting (IDW) ที่จะคาดเดาปริมาณฝุ่น ณ จุดใดๆ ผ่านการพิจารณาจุดทั้งหมดที่มีข้อมูลฝุ่นในแผนที่ ทั้งนี้เพื่อให้จุดที่อยู่ไกลไม่ส่งผลกระทบต่อการประมาณค่ามากเกินไป จึงให้น้ำหนักความสำคัญของข้อมูลแต่ละจุดแปรผกผันกับระยะห่างจากจุดที่ต้องการประมาณค่านั่นเอง
ซึ่งหัวใจสำคัญการคิดน้ำหนักในเทคนิค IDW สามารถหาได้ผ่านสมการ
\[w_i(x) = \frac1{d(x, x_i)^p}\]โดยที่
- $w_i$ คือน้ำหนักของข้อมูลตัวที่ $i$
- $x_i$ คือตำแหน่งจุดข้อมูลตัวที่ $i$
- $x$ คือตำแหน่งจุดที่เราต้องการประมาณค่า
- $d$ ฟังก์ชันคำนวณระยะทางระหว่างจุด โดยส่วนมากจะใช้ Euclidean distance
- $p$ ค่ากำลังของระยะทาง เป็นพารามิเตอร์ที่ผู้ใช้สามารถปรับค่าได้1
หลังจากนั้น ก็ประมาณค่า $u(x)$ ณ จุด $x$ ที่ต้องการ ด้วยสมการง่ายๆ ว่า
\[u(x) = \frac{ \sum\limits_{i=1}^N w_i(x)u_i }{ \sum\limits_{i=1}^N w_i(x) }\]และจะได้ผลลัพธ์ออกมา ดังภาพต่อไปนี้2
ปริมาณฝุ่น PM 2.5 ในกรุงเทพฯ แบบประมาณด้วยเทคนิค IDW ที่ใช้ค่าน้ำหนักกำลัง 2
ดูสวยงามราบรื่นขึ้นเยอะ และน่าจะให้ผลลัพธ์ใกล้เคียงกับความเป็นจริงมากกว่าการใช้แผนภาพ Voronoi อย่างแน่นอน
แต่ถ้าอยากจะประมาณค่าให้ถูกต้องยิ่งขึ้นไปอีก ก็ควรต้องเพิ่มจำนวนสถานีวัดฝุ่นให้มีมากกว่านี้ ไม่ใช่ว่าใช้แค่ 4-5 สถานีมาประมาณค่าฝุ่นทั้งกรุงเทพฯ 😢😢😢
Revision notes:
- April 11, 2020:
คุณ @zntfdr ผู้พัฒนา @BangkokAQI แจ้งมาว่าได้อัพเดทระบบให้ใช้ IDW ตามคำแนะนำของบทความนี้แล้ว เมื่อวันที่ 11 เมษายนครับ 🎉🎉🎉
author