Definisi semua variabel penting (p, Bobot, NM, NN, theta, b, SE) dan rumus CTT/IRT yang dipakai yellow-bank-soal.
Definisi Variabel & Istilah
Halaman ini menjelaskan setiap variabel yang muncul di kode dan dokumen yellow-bank-soal.
Variabel CTT (Classical Test Theory)
| Variabel | Nama Indonesia | Rumus | Range | Keterangan |
|---|
| p | Tingkat Kesukaran (TK) | p = Σ Benar / Total Peserta | [0, 1] | Proporsi peserta yang menjawab benar. Tinggi = mudah. |
| Bobot | Bobot soal | Bobot = 1 − p | [0, 1] | Soal sulit → bobot besar. Soal mudah → bobot kecil. |
| Total_Bobot_Siswa | Total bobot siswa | Σ Bobot untuk tiap jawaban benar | ≥ 0 | Skor tertimbang siswa. |
| Total_Bobot_Max | Total bobot maksimal | Σ Bobot untuk semua soal | > 0 | Skor maksimum yang mungkin. |
| NM | Nilai Mentah | NM = (Total_Bobot_Siswa / Total_Bobot_Max) × 1000 | [0, 1000] | Skor mentah siswa (skala 1000). |
| Rataan | Rata-rata NM | mean(semua NM) | bebas | Distribusi rata-rata tryout. |
| SB | Simpangan Baku | sqrt(variance(semua NM)) | > 0 | Standar deviasi NM. |
| NN | Nilai Nasional | NN = 500 + 100 × ((NM − Rataan) / SB) | [0, 1000] (di-clip) | Skor ternormalisasi (mean 500, SD 100). |
Kategori kesulitan (standar CTT)
CTT p | Kategori | Level | Setara b IRT |
|---|
p < 0.30 | Sukar | Sulit | b > 0.85 |
0.30 ≤ p ≤ 0.70 | Sedang | Sedang | -0.85 ≤ b ≤ 0.85 |
p > 0.70 | Mudah | Mudah | b < -0.85 |
Variabel IRT (Item Response Theory — Rasch 1PL)
| Variabel | Nama | Rumus | Range | Keterangan |
|---|
| θ (theta) | Kemampuan siswa | Diestimasi via MLE | [-3, +3] | Estimasi kemampuan siswa. Awal θ = 0. |
| b | Kesulitan soal | Dikalibrasi dari data respon | [-3, +3] | Tinggi = soal sulit. |
| P(θ, b) | Probabilitas benar | P = 1 / (1 + e^(−(θ − b))) | [0, 1] | Peluang siswa θ menjawab benar soal b. |
| I(θ) | Fisher Information | I(θ) = P(θ) × (1 − P(θ)) | [0, 0.25] | Maksimal saat θ = b. Dipakai untuk pemilihan soal CAT. |
| SE | Standard Error theta | SE = 1 / sqrt(Σ I(θ)) | > 0 | Presisi estimasi θ. Target SE < 0.5 setelah ≥ 15 soal. |
| θ → NN | Pemetaan silang | NN = 500 + (θ / 3) × 500 | [0, 1000] | Konversi skor IRT ke skala NN untuk komparasi. |
| CTT → IRT | Inisialisasi b | b ≈ −ln((1 − p) / p) | biasanya [-3, +3] | Estimasi awal b dari p sebelum dikalibrasi. |
Konfigurasi Tryout
| Field | Tipe | Default | Arti |
|---|
scoring_mode | ctt | irt | hybrid | ctt | Algoritma skor utama. |
selection_mode | fixed | adaptive | hybrid | fixed | Strategi pemilihan soal. |
normalization_mode | static | dynamic | hybrid | static | Cara hitung Rataan & SB. |
min_sample_for_dynamic | int | 100 | Min peserta untuk aktifkan normalisasi dinamis. |
static_rataan | float | 500.0 | Rataan manual saat static. |
static_sb | float | 100.0 | SB manual saat static. |
ai_generation_enabled | bool | false | Toggle pembuatan soal AI. |
hybrid_transition_slot | int? | null | Slot transisi fixed → adaptive (mode hybrid). |
min_calibration_sample | int | 100 | Min respon untuk kalibrasi IRT. |
theta_estimation_method | mle | map | eap | mle | Metode estimasi theta. |
fallback_to_ctt_on_error | bool | true | Fallback ke CTT bila IRT gagal. |
Konstanta internal IRT
Dari backend/app/services/irt_calibration.py:
THETA_MIN = -3.0
THETA_MAX = 3.0
B_MIN = -3.0
B_MAX = 3.0
SE_PRECISION_THRESHOLD = 0.5
MLE_BOUNDS = (-6.0, 6.0)
EDGE_CASE_THETA_HIGH = 4.0
EDGE_CASE_THETA_LOW = -4.0
NUMERICAL_CLIP = 30
DEFAULT_SE_THRESHOLD = 0.5
MIN_ITEMS_FOR_SE = 15