สูตรจริง · median → percentile
ศาสตร์ทั้ง 26 ต่างคำนวณ sub-score ของตัวเองจากวันเกิดคุณ — แต่ละตัวได้เลขในช่วง 400–999. Cosmic Score ไม่ได้เอาเลขเหล่านั้นมาเฉลี่ยถ่วงน้ำหนัก แต่ทำ 2 ขั้น:
reference distribution มาจากไหน · random charts ไม่ใช่คนดัง
percentile ต้องเทียบกับ "ประชากร" สักชุด. เราเลือกไม่เทียบกับชุดคนดัง (Steve Jobs · Einstein · ฯลฯ) เพราะชุดคนดัง cherry-pick ได้ + มี selection bias หนัก (บันทึกวันเกิดที่เชื่อถือได้ over-represent คนตะวันตก). แทนที่ เราสร้าง reference จาก:
level_raw ที่ "เป็นไปได้ทั้งหมด". percentile ของคุณจึงตอบคำถามที่ชัดเจน: median ดวงคุณอยู่ตรงไหนในอวกาศของวันเกิดที่เป็นไปได้ทั้งหมด. นี่เป็น relative rank ที่ซื่อสัตย์ — ไม่ได้อ้างว่าคนคะแนนสูง "สำเร็จในชีวิตจริง" แค่บอกว่า chart อ่านได้เข้มข้นแค่ไหนเทียบทุก chart.แกนที่สอง · Consensus reading
ควบคู่กับ "ระดับ" (level) เรารายงานอีกหนึ่งเลข: Consensus reading (agreement). มันวัด การกระจายตัว ของคะแนน 26 ศาสตร์ (median absolute deviation) แล้วแปลงกลับด้านเป็นเปอร์เซ็นไทล์ — ตอบว่า "26 ศาสตร์เห็นตรงกันแน่นแค่ไหน". เราจงใจไม่ให้ Consensus เป็นเลขใหญ่สุดบนหน้า: สถิติการกระจายตัวไม่ควรเป็นตัวชี้วัดหลัก เพราะ chart ที่อ่อนสม่ำเสมอกับ chart ที่แข็งสม่ำเสมอจะได้ "agreement สูง" เท่ากัน. level = คุณอยู่ระดับไหน · Consensus = ศาสตร์เห็นตรงกันแค่ไหน. สองคนละคำถาม.
ทำไมไม่ใช่ supervised learning
คำถามตรง ๆ: "ทำไมไม่ใช้ ML — เก็บ user input → ผลลัพธ์ → train neural net?" คำตอบตรง ๆ:
- ไม่มี label. "ดวงดี / ดวงร้าย" เป็น label ที่ subjective แตกต่างกันทุกคน. user input "ฉันชอบงานปัจจุบัน" ≠ "งานนี้เหมาะกับ archetype ของฉัน" — สอง concept คนละมิติ.
- ML overfit แน่. เก็บ data จาก user 10,000 คน, train classifier ที่ predict "user จะ rate ว่าตรงไหม" ก็จะได้ engine ที่ optimize self-reported satisfaction — ขายดีขึ้น แต่ไม่ใช่โหราศาสตร์อีกต่อไป.
- ไม่ deterministic. ML inference จะ produce ผลลัพธ์ที่เปลี่ยนเมื่อ retrain. สัญญาของเราคือ "วันเกิดเดียวกัน → คะแนนเดียวกัน ตลอดไป" — ML breaks that.
- เรื่อง privacy. Supervised ต้องเก็บ user data centrally เพื่อ train. Engine ของเรารันใน browser ของคุณ ไม่ส่งวันเกิดออก. ML ต้อง break สถาปัตยกรรมนั้น.
Cosmic Score จึงเป็น สูตร deterministic ที่เปิดเผยได้ — median แล้ว percentile — ไม่ใช่ "AI ที่ learn". เราไม่ปกปิดว่ามันคือ arithmetic ที่ verify ได้ ไม่ใช่กล่องดำ.
ทำไม reference ถูก freeze
ถ้า reference distribution เปลี่ยนได้ → คะแนนของคุณวันนี้ ≠ คะแนนของคุณปีหน้า แม้วันเกิดยังคงเดิม. นั่น break "version-locked deterministic engine" promise. เรา freeze CDF เป็นเวอร์ชัน (cdf_v3_level, 2 ก.ค. 2026) — และจะไม่ปรับจนกว่าจะมี engine v2 upgrade (เพิ่ม IAU 2006 precession + precise jiéqì) ตอนนั้นจะ re-calibrate ครั้งเดียวพร้อม code change ครั้งใหญ่ และ document ใน changelog.
_CDF_MED สำหรับ level, _CDF_MAD สำหรับ Consensus) เขียนตรง ๆ ใน Mythsensus/report-engine/lib/calc.ts พร้อมฟังก์ชัน _pctInCdf() ที่ทำ interpolation — ทุก commit เป็น public history ใน git. Bundle เดียวกันถูกแจกผ่าน mythsensus-mcp on npm (MIT license).
ทำไม recalibrate · เม.ย. → ก.ค. 2026
เราเปิดเผยการเปลี่ยนแปลงด้วย: เวอร์ชันแรก (เม.ย. 2026) ใช้ weighted-median ที่ tune ให้ median ของประชากรตกที่ ~500. ปัญหาที่เจอเมื่อรันจริง: median ของ 26 ศาสตร์ collapse spread — คนส่วนใหญ่กระจุกในแถบแคบ และการถ่วงน้ำหนักตาม "granularity" แทบไม่ขยับผลลัพธ์. เราจึงย้ายมาเป็น median (ไม่ถ่วงน้ำหนัก) → percentile ซึ่งสะท้อน "ระดับเทียบประชากร" ได้ตรงกว่า และแยก agreement ออกไปเป็น Consensus reading ต่างหาก. การ review ภายใน (ก.ค. 2026) ยืนยันหลักการหนึ่งข้อ: สถิติการกระจายตัวไม่ควรเป็นเลขหลักบนหน้า — ระดับต่างหากที่ควรเป็น.
Honest disclosure · gap ที่เหลือ
Gap 1 · self-referential. percentile เทียบกับ output ของ engine เอง (การกระจายของ median จากวันเกิดสุ่ม) — ไม่ได้ validate กับ outcome จริงในโลก. มันตอบได้แค่ "median ดวงคุณอยู่อันดับไหนในบรรดา chart ที่เป็นไปได้" ไม่ได้ตอบ "ดวงนี้ดีในชีวิตจริงไหม". เรายอมรับว่านี่คือ internal ranking ไม่ใช่ external truth.
Gap 2 · median band แคบ → relative rank. เพราะ median ของ 26 ศาสตร์กระจุกใน ~80 pts การ normalise เป็น 1–1,000 จึงขยายช่องเล็ก. คะแนนจึงเป็น อันดับเชิงเปรียบเทียบ ที่ไวต่อความต่างเล็กน้อย ไม่ใช่หน่วยวัดสัมบูรณ์ที่ละเอียด. widen band แบบเทียมจะทำให้ percentile โกหก เราจึงไม่ทำ และเลือกบอกข้อจำกัดนี้แทน.
Gap 3 · ไม่มี predictive validation. เราไม่ได้พิสูจน์ว่า "คนคะแนนสูงทำเงินได้มากกว่า · ดวงดีจริงไหม". ไม่มี outcome variable ที่ engine optimize. เราพิสูจน์เฉพาะ internal consistency. ถ้าผู้ใช้คาดหวัง "แม่นเพราะ ML predict outcome ของฉัน" — engine ไม่ทำเช่นนั้น และไม่ควรขายว่าทำเช่นนั้น.
The reproducibility loop
ถ้าคุณเป็น engineer อยากจะ verify methodology นี้:
npx mythsensus-mcp— engine เดียวกัน, MIT-licensed, calls deterministic functions ใน CJS files- เปิด
report-engine/lib/calc.tsอ่านตรง ๆ: การหา median ของ voting systems, ค่า_CDF_MED/_CDF_MAD, และ_pctInCdf()ที่แปลง median → percentile - รันวันเกิดเดียวซ้ำหลายครั้ง → คะแนนต้องเท่ากันทุกครั้ง (deterministic) · เปลี่ยนวันเกิดทีละวัน → ดูคะแนนขยับตาม percentile
- ถ้าตัวเลขไม่ตรงกับที่เว็บแสดง — เปิด issue ที่ mythsensus-mcp GitHub
บทความนี้เปิดสูตรตรง ๆ เพราะถ้า engineer audience จะ tear apart ก็ tear apart ก่อนที่ marketing copy จะอ้างเกินจริง. ปรับปรุง 3 ก.ค. 2026 ให้ตรงกับ engine ปัจจุบัน (median → percentile) หลัง recalibration เดือน ก.ค.