เปิดการคำนวณที่นั่งส.ส.ในระหว่างการรายงานผลการเลือกตั้งปี 66 โดย THE STANDARD ร่วมกับ Cleverse

May 10th, 2023
5 min read

ในการเลือกตั้งครั้งนี้ Cleverse ร่วมมือกับ THE STANDARD ในการจัดทำเว็บไซต์รายงานสดผลการเลือกตั้ง ซึ่งใน blog post นี้ ผมขอมาเล่าส่วนที่เกี่ยวข้องกับการคำนวณตัวเลขที่นั่งส.ส.ในระหว่างที่กำลังนับคะแนนที่แต่ละหน่วยเลือกตั้ง

image
image

ระบบเลือกตั้งแบบบัตรสองใบ

การเลือกตั้งในปี 2566 นี้ เราใช้ระบบเลือกตั้งแบบบัตรสองใบ แบ่งเป็นการเลือกส.ส.แบบแบ่งเขต 400 คน และการเลือกส.ส.แบบบัญชีรายชื่อ 100 คน

ในการเลือกส.ส.แบบแบ่งเขต ผู้ชนะของเขตนั้น คือผู้สมัครที่ได้คะแนนสูงสูดในเขตนั้น

image

จากภาพ จะเห็นว่าผู้สมัครก.ได้คะแนนสูงสุด จึงเป็นผู้ชนะในเขตนั้น

สำหรับในส่วนของส.ส.แบบบัญชีรายชื่อนั้น จำนวนส.ส.ในแต่ละพรรค จะเป็นสัดส่วนกันกับจำนวนคะแนนเสียงในระบบบัญชีรายชื่อของทั้งประเทศรวมกัน

image

จากภาพ ด้านซ้ายเป็นคะแนนเสียงในส่วนของบัตรบัญชีรายชื่อทั่วประเทศรวมกัน ด้านขวาเป็นที่นั่งส.ส.บัญชีรายชื่อที่จะได้ จะเห็นได้ว่าเป็นสัดส่วนเดียวกัน

โจทย์และความท้าทายของการรายงานจำนวนที่นั่งส.ส.ระหว่างการนับคะแนน

เนื่องจากการรายงานผลการเลือกตั้งแบบเรียลไทม์นั้น จะต้องแสดงผลคะแนนเสียงที่นับไปแล้วถึงปัจจุบัน รวมถึงต้องคำนวณจำนวนที่นั่งส.ส. “ที่คาดว่าจะได้” โดยที่อาจจะยังนับคะแนนไม่ครบทุกหน่วยเลือกตั้ง

การเลือกวิธีในการคำนวณว่าจะรายงานจำนวนที่นั่งส.ส.เท่าใดนั้นเป็นสิ่งที่ทางเราให้ความสำคัญ เนื่องจากจะส่งผลถึงการรับรู้ของประชาชน และแนวโน้มการจัดตั้งรัฐบาลในคืนวันเลือกตั้ง

โดยแกนหลักที่เราจะใช้ในการพิจารณาคือมิติของ conservative - presumptive โดยมีรายละเอียดดังนี้

conservative หมายถึงการรายงานจำนวนที่นั่งแบบที่ต้องมั่นใจมากว่าผู้สมัครคนใดจะเป็นผู้ชนะ ถึงจะตัดสินใจรายงาน

presumptive หมายถึงการรายงานผลแบบที่ใช้ข้อมูลเท่าที่มีในการคาดเดาว่าผู้สมัครคนใดจะเป็นผู้ชนะ โดยไม่จำเป็นต้องนับคะแนนจนครบทุกใบ

image

จากตัวอย่างที่นับคะแนนไปได้ 5% ถ้าใช้เกณฑ์ที่ presumptive อาจจะรายงานไปได้เลยว่าผู้สมัคร ข. เป็นผู้ชนะในเขตนี้ ถึงแม้ว่าเมื่อนับคะแนนไปเรื่อย ๆ แล้ว มีโอกาสที่ผู้สมัคร ก. จะมีคะแนนแซงขึ้นมาก็เป็นได้

ด้าน presumptive เองนั้นก็มีเฉดของความ presumptive มากน้อยด้วยเหมือนกัน ซึ่งความเร็วในการแสดงผลคะแนนตั้งแต่เนิ่น ๆ ก็จะแลกมาด้วยความแม่นยำที่ลดลงในการรายงานผล เช่นตัวเลขที่นั่งอาจมีการเปลี่ยนแปลงในภายหลัง ความท้าทายของการรายงานผลที่นั่งส.ส.ระหว่างการนับคะแนน จึงการเป็นการเลือกว่าจะเลือกอยู่ตรงไหนในแกนของ conservative - presumptive

แนวทางของเว็บไซต์รายงานผลการเลือกตั้งปี 66 โดย THE STANDARD ร่วมกับ Cleverse

ทางทีมของเราเมื่อได้โจทย์นี้มา ก็ไปลองทำ user interview เพื่อที่จะดูว่า user ในกลุ่มต่าง ๆ จะมีความเข้าใจในการรายงานผลที่นั่งในแบบต่าง ๆ หรือไม่ และ user แต่ละคนจะชอบการรายงานผลแบบใด หลังสรุปผล เราจึงตัดสินใจให้ user สามารถเลือกได้ว่าต้องการเห็นข้อมูลแบบใด โดยสามารถเลือกได้ระหว่างการคำนวณแบบปกติ และการคาดการณ์ 500 ที่นั่ง ถ้ามาวางในแกน conservative - presumptive ก็น่าจะวางได้ดังนี้

image

เราตัดสินใจไม่เลือกทางที่ conservative สุด ๆ เนื่องจากจะต้องรอนับคะแนน 90-100% ถึงจะรายงานผลตัวเลขที่นั่งได้ ซึ่งทำให้ user ไม่ได้ข้อมูลใด ๆ เกี่ยวกับผลการเลือกตั้งระหว่างการนับคะแนนเลย

image
UI ในการ Toggle เพิ่มเปิดการคาดการณ์ 500 ที่นั่ง

สำหรับรายละเอียดของการคำนวณในแบบต่าง ๆ ที่เราตัดสินใจเลือกใช้เป็นดังต่อไปนี้

การคำนวณแบบปกติ ในส่วนของส.ส.แบบแบ่งเขต

สำหรับในการคำนวณส.ส.แบบเขต แนวคิดของเราคือ ในกรณีที่นับคะแนนไปแล้ว 20% แล้วถ้าผลคะแนนออกมาว่าผู้สมัครที่ได้ที่ 1 มีคะแนนสูงกว่าผู้สมัครคนอื่น ๆ อย่างมาก เราก็ควรจะอนุมานได้ว่าผู้สมัครคนนั้นจะเป็นผู้ชนะเมื่อนับคะแนนครบ 100% แต่ในอีกกรณี ที่นับคะแนนไปแล้ว 80% แต่คะแนนของที่ 1 กับที่ 2 นั้นห่างกันเพียงเล็กน้อย เราก็จะยังไม่สามารถอนุมานได้ว่าผู้สมัครคนใด จะเป็นผู้ชนะในเขตนั้น

สำหรับวิธีการคำนวณ เราจะใช้ข้อมูลคะแนนเสียงที่นับแล้ว และข้อมูลเปอร์เซ็นต์การนับคะแนน โดยมีสมมติฐานว่าคะแนนที่นับแล้วปัจจุบัน จะมีสัดส่วนที่ใกล้เคียงกันกับคะแนน 100%

image

ตัวอย่างในภาพคือการขยายคะแนนที่นับแล้ว 40% เป็นคะแนนที่นับแล้ว 100% 

แน่นอนว่าถ้าเราขยายโดยตรง จะพบว่าผู้ชนะในเขตก็ยังเป็นคนเดิม สิ่งที่เราทำต่อมาคือกำหนดค่าความคลาดเคลื่อนของคะแนนที่ยังไม่ได้นับ ตัวอย่างเช่นความคลาดเคลื่อน 10% แสดงว่า 90% ของคะแนนที่ยังไม่ได้นับจะมีสัดส่วนเดียวกับคะแนนที่นับแล้ว ส่วนที่เหลืออีก 10% จะไม่ได้มีสัดส่วนตามนั้น

ในกรณีนี้ เราจะได้ว่าคะแนน 94% ของคะแนนทั้งหมดจะเป็นสัดส่วนเดียวกับคะแนนที่นับแล้ว (40% + 90% x 60%) ส่วนที่เหลืออีก 6% จะไม่ได้มีสัดส่วนตามนั้น เพื่อที่จะยืนยันผลการแพ้ชนะของเขตนี้ เราจึงต้องคิดในมุม worst-case scenario ซึ่งก็คือกรณีที่คะแนน 6% นั้นเป็นของผู้สมัครที่ได้ลำดับ 2 ทั้งหมด ซึ่งถ้าคิด worst-case scenario แล้วผู้สมัครอันดับ 1 ยังคงคะแนนนำ เราจะสามารถยืนยันได้ว่า ผู้สมัครลำดับที่ 1 เป็นผู้ชนะในเขตนี้ แต่ถ้าผู้สมัครที่ได้ลำดับ 2 พลิกมานำผู้สมัครที่ได้ลำดับ 1 ใน worst-case scenario เราจะยังไม่ยืนยันผล และจะรอให้คะแนนเข้ามาเยอะกว่านี้ก่อน

image

จากตัวอย่างในภาพ ซ้ายคือการนับคะแนนไปแล้ว 20% จะเห็นว่าถ้ารวมกรณี worst-case ไป จะไม่สามารถยืนยันผู้ชนะได้ แต่ถ้าเป็นกรณีภาพขวาที่นับไปแล้ว 40% ถึงแม้ว่าเป็นกรณี worst-case แต่ผู้สมัคร ก. ก็ยังชนะอยู่ดี ดังนั้นเราจึงสามารถยืนยันผลของเขตนี้ได้ ว่าผู้สมัคร ก. เป็นผู้ชนะ

การคำนวณแบบปกติ ในส่วนของส.ส.แบบบัญชีรายชื่อ

ในส่วนของส.ส.แบบบัญชีรายชื่อ การคำนวณที่อาจจะนิยมใช้กันก็คือกำหนดตัวเลขคะแนนเสียงต่อ 1 ที่นั่งขึ้นมา โดยอาจจะอิงจากคะแนนเสียงในการเลือกตั้งปีก่อนหน้า เช่น ถ้าปี 2562 มีคะแนนบัตรดีทั้งหมด 35,561,556 คะแนน ก็ใช้เลข 355,615 คะแนนต่อ 1 ที่นั่ง จากนั้นถ้าระหว่างการนับคะแนน มีพรรคใดได้ถึง 355,615 ก็จะได้ไป 1 ที่นั่ง

วิธีข้างต้น จัดอยู่ในหมวดวิธีที่ conservative เพราะที่นั่งที่แสดงผลได้จะมีความแน่นอนสูง แต่ข้อเสียคือเมื่อนับคะแนนไป 10% เราจะเห็นตัวเลขของส.ส.บัญชีรายชื่อแค่ 10 คน หรือน้อยกว่า ซึ่งโดยตามหลักแล้ว สัดส่วนของคะแนนที่ยังไม่ได้นับ ก็เป็นสัดส่วนที่ใกล้เคียงกันกับสัดส่วนของคะแนนที่นับแล้ว ไม่มากก็น้อย

เราจึงสามารถใช้วิธีที่ใกล้เคียงกันกับการคำนวณของส.ส.แบบแบ่งเขต คือการกำหนดค่าความคลาดเคลื่อนของคะแนนที่ยังไม่ได้นับ และคำนวณหาว่าคะแนนจำนวนเท่าใดที่น่าจะไม่คลาดเคลื่อนจากสัดส่วนของคะแนนที่นับแล้ว

image

จากตัวอย่างด้านบน แท่งซ้ายคือสัดส่วนคะแนนที่นับแล้ว ซึ่งเป็น 50% ของคะแนนทั้งหมด สำหรับอีก 50% ที่เหลือ จะมีการเผื่อการคลาดเคลื่อนไว้ 70% ส่วนอีก 30% จะคิดว่าเป็นสัดส่วนเดียวกันกับคะแนนที่นับแล้ว

ด้วยวิธีนี้ ทำให้เราสามารถคำนวณส.ส.บัญชีรายชื่อได้มากขึ้น แต่ยังคงความมั่นใจในจำนวนที่นั่งอยู่ โดยสาเหตุที่เลือกใช้ค่าความคลาดเคลื่อนของส.ส.แบบบัญชีรายชื่อ สูงกว่าแบบแบ่งเขตนั้น ก็เป็นเพราะว่าค่าความผันผวนของคะแนนแบบบัญชีรายชื่อนั้นมีสูง โดยเฉพาะสัดส่วนในแต่ละภูมิภาคที่ต่างกัน จึงเลือกใช้ค่าที่สูงกว่าในการคำนวณ

การคำนวณแบบคาดการณ์ 500 ที่นั่ง

สำหรับการคำนวณแบบนี้ เราเลือกการคำนวณที่ presumptive ที่สุดเพื่อให้สามารถแสดงผลส.ส. ได้ถึง 500 ที่นั่ง

การคำนวณส.ส.แบบแบ่งเขต จะเลือกให้ผู้สมัครที่มีคะแนนสูงสุด เป็นผู้ชนะในเขตนั้น จะทำให้ได้ตัวเลขส.ส.เขต 400 ที่นั่ง (อาจจะน้อยกว่านั้นถ้ามีเขตที่ยังไม่มีคะแนนเข้ามา)

การคำนวณส.ส.แบบบัญชีรายชื่อ จะใช้คะแนนรวมของคะแนนที่นับแล้วทั้งหมด เป็นฐานคะแนนในการคำนวณส.ส.บัญชีรายชื่อ วิธีนี้จะทำให้ได้ส.ส.บัญชีรายชื่อ 100 ที่นั่ง

ด้วยวิธีนี้ เราจะได้ตัวเลขส.ส.ทั้งหมด 500 ที่นั่ง แต่ด้วยความที่เป็นวิธีที่ presumptive ที่สุด ดังนั้นตัวผลการรายงานอาจจะมีการปรับเปลี่ยนได้เสมอ

การเลือกแหล่งข้อมูลที่แสดงผล

image

เนื่องจากในการเลือกตั้งครั้งนี้ มีทั้งแหล่งข้อมูลจากกกต. และจากอาสาสมัครสื่อมวลชน ที่รวมกันตัวเพื่อรายงานคะแนนตามหน่วยต่าง ๆ เราเลยให้ผู้ใช้งานให้เลือกได้เลย ว่าต้องการดูข้อมูลจากแหล่งข้อมูลใด แถมยังมีอีกโหมดนึงอีกด้วย ก็คือโหมดอัตโนมัติ โดยระบบจะเลือกคะแนนจากเขตที่มากที่สุดมาแสดงผลให้

สรุป

การเลือกใช้วิธีการคำนวณแบบต่าง ๆ นั้นก็จะมีข้อดีข้อเสียที่แตกต่างกันไป บทความนี้มีจุดประสงค์ที่จะอธิบายรายละเอียดการคำนวณและเบื้องหลังวิธีการคิดของเรา เพื่อให้ผู้ใช้งานได้เข้าใจถึงความท้าทายของโจทย์ และเรียนรู้ไปด้วยกันกับเรา ผมขอฝากผลงานของ Cleverse กับ THE STANDARD ในส่วนของการรายงานผลการเลือกตั้งด้วยครับ เป็นงานที่เราตั้งใจทำกันเต็มที่จริง ๆ

author's profile image
PanJ

Chief Technology Officer