สูตรจริง · median → percentile

ศาสตร์ทั้ง 26 ต่างคำนวณ sub-score ของตัวเองจากวันเกิดคุณ — แต่ละตัวได้เลขในช่วง 400–999. Cosmic Score ไม่ได้เอาเลขเหล่านั้นมาเฉลี่ยถ่วงน้ำหนัก แต่ทำ 2 ขั้น:

ขั้นที่ 1 · median ของ 26 ศาสตร์
level_raw = median(sub-scores ของ 26 ศาสตร์)
ใช้ ค่ามัธยฐาน (median) ไม่ใช่ค่าเฉลี่ย เพราะ median ทนต่อ outlier — ถ้ามีศาสตร์เดียวให้คะแนนโดดขึ้นหรือลง มันจะไม่ดึงคะแนนรวมของคุณ. Biorhythm เป็นชั้นรายวันที่เปลี่ยนทุกวัน (ศาสตร์ที่ 27) จึงไม่นับใน median นี้.
ขั้นที่ 2 · percentile เทียบประชากร
Cosmic Score = scale(percentile ของ level_raw ใน reference CDF) → 1–1,000
median ดิบเพียงอย่างเดียวบอกอะไรไม่ได้ถ้าไม่มีจุดอ้างอิง. เราจึงนำมันไปจัดอันดับเทียบ reference distribution แล้วแปลงเป็นเปอร์เซ็นไทล์ scale 1–1,000. คะแนน 900 ไม่ได้แปลว่า "ดวงดี 90%" — มันแปลว่า median ดวงคุณสูงกว่าประชากรอ้างอิงราว 90%.
Cosmic Score ไม่ใช่ weighted average. ใน breakdown คุณจะเห็นเลข weight ต่อศาสตร์ — นั่นเป็นตัวช่วยให้อ่านง่าย ไม่ใช่ตัวคูณที่เข้าไปในคะแนน. ตัวเลข Cosmic Score จริงมาจาก median ที่ไม่ถ่วงน้ำหนักล้วน ๆ จึงไม่มีศาสตร์ไหน (ต่อให้ "ละเอียด" กว่า) ครอบงำคะแนนของคุณได้.

reference distribution มาจากไหน · random charts ไม่ใช่คนดัง

percentile ต้องเทียบกับ "ประชากร" สักชุด. เราเลือกไม่เทียบกับชุดคนดัง (Steve Jobs · Einstein · ฯลฯ) เพราะชุดคนดัง cherry-pick ได้ + มี selection bias หนัก (บันทึกวันเกิดที่เชื่อถือได้ over-represent คนตะวันตก). แทนที่ เราสร้าง reference จาก:

Reference sample · วันเกิดสุ่ม
CDF สร้างจากการรัน engine กับ sample วันเกิดสุ่มจำนวนมาก
รันวันเกิดสุ่มจำนวนมากผ่าน engine เดียวกัน → ได้การกระจายของ level_raw ที่ "เป็นไปได้ทั้งหมด". percentile ของคุณจึงตอบคำถามที่ชัดเจน: median ดวงคุณอยู่ตรงไหนในอวกาศของวันเกิดที่เป็นไปได้ทั้งหมด. นี่เป็น relative rank ที่ซื่อสัตย์ — ไม่ได้อ้างว่าคนคะแนนสูง "สำเร็จในชีวิตจริง" แค่บอกว่า chart อ่านได้เข้มข้นแค่ไหนเทียบทุก chart.
ข้อจำกัดที่มาคู่กัน · median band แคบ. median ของ 26 ศาสตร์กระจุกตัวในแถบแคบจริง (~80 pts). การ normalise แถบแคบให้กลายเป็น 1–1,000 จึง ขยาย ช่องเล็ก ๆ ให้ดูห่างกว่าที่เป็น. เราเลือกวิธีนี้เพราะการทำ band ให้กว้างเทียม ๆ จะทำให้ percentile "โกหก". ผลคือ Cosmic Score เป็น อันดับเชิงเปรียบเทียบที่ซื่อสัตย์ ไม่ใช่หน่วยวัดสัมบูรณ์ที่ละเอียด — เราระบุไว้ตรงนี้ชัด ๆ.

แกนที่สอง · 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?" คำตอบตรง ๆ:

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.

Concrete: ค่าคงที่อยู่ไหน? quantile CDF ทั้งสอง (_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 นี้:

ลอง Cosmic Score ของคุณ — ฟรี
วันเกิดเดียวกัน → คะแนนเดียวกัน ตลอดไป · เปิด DevTools ได้ ดูเองว่าไม่ส่งข้อมูลออก
เริ่มเลย →

บทความนี้เปิดสูตรตรง ๆ เพราะถ้า engineer audience จะ tear apart ก็ tear apart ก่อนที่ marketing copy จะอ้างเกินจริง. ปรับปรุง 3 ก.ค. 2026 ให้ตรงกับ engine ปัจจุบัน (median → percentile) หลัง recalibration เดือน ก.ค.