CAT Selection
Detail modul cat_selection.py - pemilihan soal adaptif (fixed/adaptive/hybrid), terminasi, reuse awareness.
Modul: CAT Selection
Source:
backend/app/services/cat_selection.pyLihat juga: Alur CAT, Alur Hybrid, Konsep → Mode Tryout
Tanggung Jawab
Computer Adaptive Testing (CAT) — modul yang memilih soal mana yang harus ditampilkan berikutnya kepada siswa:
- 3 strategi:
fixed,adaptive,hybrid - Update theta real-time setelah setiap jawaban
- Cek terminasi sesi (SE cukup presisi atau max items)
- Filter soal: hindari reuse per user (lintas sesi)
Entry Point
Dispatcher utama yang mendelegasikan ke salah satu dari 3 handler.
Strategi 1: Fixed (get_next_item_fixed)
Soal dikirim sesuai urutan slot (1, 2, 3, ...). Tidak ada logika adaptif.
Use case: Default aman, kompatibel dengan Excel klien, peserta sedikit, IRT belum terkalibrasi.
Strategi 2: Adaptive (get_next_item_adaptive)
Pilih soal yang paling informatif untuk estimasi theta siswa saat ini.
Algoritma Pemilihan
Rumus kunci:
Pilih skor terkecil. Berarti: soal dengan b paling dekat ke θ, dan information tinggi.
Kenapa Pakai Bobot 0.1 untuk Information?
b_distancerange: [0, 6] (θ, b ∈ [-3, +3])informationrange: [0, 0.25]- Faktor 0.1 menyeimbangkan: information berkontribusi [0, 0.025] — signifikan tapi tidak mendominasi
Hasilnya: prioritaskan soal yang dekat dengan kemampuan siswa, dengan tie-breaker ke soal yang lebih informatif.
Use case: Sudah punya ≥ min_calibration_sample respon per soal, ingin tes presisi tinggi dengan panjang minimal.
Strategi 3: Hybrid (get_next_item_hybrid)
Transisi mulus dari fixed ke adaptive berdasarkan slot.
Konfigurasi:
hybrid_transition_slot(default: null — harus di-set admin)- Contoh:
hybrid_transition_slot = 10→ 10 soal pertama fixed, sisanya adaptive
Use case: Transisi dari CTT ke IRT — siswa "warm-up" dengan soal fixed, lalu adaptif setelah data cukup.
Update Theta Real-Time
Dipanggil setelah setiap jawaban untuk update theta sebelum pilih soal berikutnya.
Terminasi Sesi
Konstanta:
DEFAULT_SE_THRESHOLD = 0.5(PRD: presisi cukup)MIN_ITEMS_FOR_SE = 15(PRD: minimum soal sebelum terminasi berbasis SE)
Insight: Dengan CAT, tes bisa selesai dalam 15-30 soal (vs 50-100 di fixed) untuk siswa dengan kemampuan jelas — karena SE cepat konvergen.
Reuse Awareness
Tujuan: Cegah siswa melihat soal yang sama di attempt berbeda. Kalau sudah pernah jawab (slot, level) tertentu, soal di filter itu dianggap "sudah terpakai" untuk user ini.
Helper Functions
Output: NextItemResult
Contoh reason:
- Fixed:
"Fixed order selection - slot 5" - Adaptive:
"Adaptive selection - b=0.234 ≈ θ=0.180"
Edge Cases
Dependency
irt_calibration.estimate_theta_mle(update theta)irt_calibration.calculate_item_information(skoring kandidat)- Model:
Session,Item,UserAnswer
Bacaan Lanjutan
- Konsep → Mode Tryout — kapan pakai fixed/adaptive/hybrid
- Konsep → Alur CAT — diagram sequence
- Modul → IRT Calibration — estimasi theta yang dipakai CAT
- API → Adaptive — endpoint yang konsumsi modul ini
Last updated Jul 25, 2026