Tujuan Pembelajaran
Setelah menyelesaikan modul ini, Anda akan mampu:
- menjelaskan perbedaan antara hasil yang dapat diulang, hasil yang dapat ditelusuri, dan kesimpulan yang benar;
- menata proyek pemodelan sehingga data, asumsi, kode, lingkungan komputasi, dan keluaran dapat diperiksa secara terpisah;
- menyatakan kontrak model yang memuat variabel, satuan, parameter, domain, asumsi, serta kriteria kegagalan;
- menggunakan bilangan acak, pembagian data, dan catatan asal-usul data secara deterministik; dan
- menjalankan ulang notebook dari keadaan bersih serta memverifikasi hasilnya dengan pemeriksaan numerik dan hash.
Reprodusibilitas adalah rantai bukti
Dalam pemodelan matematika, sebuah angka akhir bukanlah hasil yang berdiri sendiri. Angka itu bergantung pada pertanyaan yang diajukan, data yang digunakan, asumsi yang dibuat, persamaan yang dipilih, nilai parameter, algoritma, versi perangkat lunak, dan urutan eksekusi. Proyek disebut reprodusibel secara komputasional apabila orang lain dapat mengambil bahan yang sama, menjalankan prosedur yang dinyatakan, dan memperoleh keluaran yang sama dalam toleransi yang telah ditetapkan.
Reprodusibilitas tidak membuktikan bahwa model benar. Kesalahan yang ditulis dengan rapi tetap merupakan kesalahan. Namun, tanpa rantai bukti yang dapat diperiksa, pembaca tidak dapat membedakan perbedaan ilmiah dari kesalahan salin, keadaan tersembunyi dalam notebook, perubahan data, atau perbedaan lingkungan komputasi. Karena itu, reprodusibilitas merupakan syarat pemeriksaan, bukan pengganti kritik model.
Satu pertanyaan, satu proyek yang dapat diperiksa
Mulailah dengan satu pertanyaan operasional. Contohnya: “Dengan menganggap suhu ruangan tetap, seberapa cepat secangkir cairan panas mendekati suhu ruangan?” Pertanyaan ini lebih berguna daripada judul umum seperti “model pendinginan” karena menyebutkan sistem, besaran yang diamati, dan asumsi yang paling menentukan.
Struktur direktori berikut memisahkan bahan yang memiliki fungsi berbeda. Nama direktori bukan hukum universal; pemisahan tanggung jawabnya yang penting.
proyek-pendinginan/
├── README.md
├── requirements.lock
├── data/
│ ├── raw/
│ └── derived/
├── src/
│ └── model.py
├── notebooks/
│ └── analisis.ipynb
├── outputs/
└── manifest.tsv
| Unsur | Isi | Aturan minimum |
|---|---|---|
README.md | Pertanyaan, cara menjalankan, dan batas klaim | Pembaca baru dapat memulai tanpa menebak urutan langkah. |
requirements.lock | Versi tepat perangkat lunak | Jangan hanya menulis “gunakan Python terbaru”. |
data/raw | Data sebagaimana diperoleh | Jangan diedit secara manual; simpan identitas dan sumbernya. |
data/derived | Data hasil pembersihan atau transformasi | Harus dapat dibuat ulang dari data mentah dengan kode. |
src | Fungsi model dan prosedur analisis | Hindari logika penting yang hanya hidup di keadaan notebook. |
notebooks | Narasi eksekutabel | Harus lulus “mulai ulang lalu jalankan semua”. |
outputs | Gambar dan tabel turunan | Boleh dihapus dan dibuat ulang tanpa kehilangan informasi asli. |
manifest.tsv | Daftar berkas, ukuran, dan hash | Mengikat klaim pada byte yang tepat. |
Bekukan konteks sebelum menghitung
Catat versi Python dan setiap pustaka yang memengaruhi hasil. Versi yang dipatok membuat lingkungan dapat dibangun ulang; ia tidak menjamin bahwa pustaka bebas cacat. Catat pula sistem operasi atau arsitektur apabila perhitungan sangat peka terhadap implementasi numerik.
Jika simulasi memakai bilangan acak, gunakan pembangkit yang dibuat dari benih eksplisit. Dalam NumPy, bentuk seperti rng = np.random.default_rng(20260822) lebih mudah diaudit daripada keadaan acak global. Benih menjadikan satu realisasi dapat diulang, tetapi tidak menjadikan satu realisasi representatif. Analisis yang bergantung pada keacakan tetap perlu diperiksa dengan beberapa benih yang dinyatakan.
Gunakan satuan eksplisit. Nama t dan k tidak cukup apabila pembaca tidak tahu apakah waktu diukur dalam detik, menit, atau hari. Konversi satuan harus terjadi di satu tempat yang terlihat. Tanggal, zona waktu, pemisah desimal, pengodean teks, dan aturan penanganan data hilang juga termasuk konteks ketika dapat mengubah interpretasi.
Tulis kontrak model
Sebelum melakukan estimasi parameter, tuliskan apa yang masuk ke model, apa yang keluar, dan kapan model tidak layak digunakan. Untuk contoh pendinginan, misalkan adalah suhu cairan dalam derajat Celsius pada waktu menit, suhu lingkungan tetap, dan tetapan laju dengan satuan menit. Hukum pendinginan Newton dinyatakan oleh
dengan solusi
Kontrak contoh ini memuat asumsi bahwa suhu cairan seragam, suhu lingkungan tetap, laju pertukaran panas sebanding dengan selisih suhu, dan alat ukur tidak mengubah sistem secara berarti. Domain parameternya mencakup dan nilai yang masuk akal secara fisik. Model gagal sebagai deskripsi apabila, misalnya, suhu lingkungan berubah tajam, cairan mengalami perubahan fase, atau residu menunjukkan pola sistematis yang besar.
Kontrak juga harus menyebutkan konvensi perangkat lunak. Notebook pendamping menggunakan argumen fungsi dalam urutan (waktu_menit, laju_per_menit, suhu_lingkungan_c), menetapkan , dan membatasi pencarian parameter agar serta .
Contoh kerja: dari data sintetis ke pemeriksaan
Notebook pendamping membuat sebelas pengamatan sintetis pada menit. Nilai parameter pembangkit data adalah menit, , dan simpangan baku galat pengukuran . Benih tetap digunakan agar byte data dapat dihitung ulang. Data sintetis dipakai untuk menguji alur kerja; data tersebut bukan bukti empiris tentang proses pendinginan nyata.
Delapan pengamatan pertama digunakan untuk mengestimasi dan , sedangkan tiga pengamatan terakhir menjadi data uji dan tidak digunakan dalam proses estimasi. Pemisahan ini sengaja sederhana. Tujuannya ialah memperlihatkan bahwa prosedur estimasi dan pemeriksaan harus dibedakan. Modul C4 membahas validasi, identifiabilitas, perbandingan model, dan ketidakpastian secara lebih mendalam.
Untuk data latih , parameter dipilih dengan meminimalkan jumlah kuadrat residu
Setelah parameter diestimasi, notebook menghitung residu , akar rerata kuadrat galat pada data latih (RMSE), korelasi residu dengan waktu, dan galat absolut rerata pada data uji yang disisihkan (holdout). Besaran-besaran ini merupakan pemeriksaan alur kerja, bukan sertifikat bahwa model memadai untuk semua tujuan.
Notebook tanpa keadaan tersembunyi
Notebook mudah menyesatkan ketika sel dijalankan tidak berurutan. Variabel dapat tetap hidup dari percobaan lama, gambar dapat berasal dari parameter yang sudah berubah, dan keluaran tersimpan dapat tampak sah walaupun kode saat ini gagal. Karena itu, pemeriksaan minimum ialah: mulai ulang kernel, hapus keluaran, jalankan semua sel dari atas ke bawah, lalu pastikan semua pemeriksaan lulus.
- Sel impor tidak mengunduh data dan tidak mengubah lingkungan.
- Konstanta, benih, satuan, serta batas parameter dinyatakan sebelum digunakan.
- Fungsi model tidak bergantung pada variabel global yang tersembunyi.
- Data turunan dibuat oleh kode, bukan disunting dengan tangan.
- Pemisahan data dilakukan sebelum estimasi parameter.
- Gambar dibuat dari objek data dan parameter yang sama dengan ringkasan numerik.
- Pemeriksaan menggunakan toleransi bermakna, bukan kesamaan pecahan mengambang secara membuta.
Notebook kanonik disimpan tanpa keluaran eksekusi. Pilihan ini memudahkan pemeriksaan perubahan byte dan memaksa keluaran dibuat ulang. Pembaca tetap dapat menjalankannya secara lokal dengan perangkat lunak terbuka yang dipatok dalam requirements.lock.
Manifest, hash, dan batas yang tepat
Hash SHA-256 memadatkan byte sebuah berkas menjadi pengenal yang peka terhadap perubahan. Hash menjawab pertanyaan “apakah byte ini sama?”, bukan “apakah isi ini benar?” atau “apakah dua tabel yang diformat berbeda memiliki makna yang sama?”. Catat sekurang-kurangnya jalur relatif, jumlah byte, dan hash untuk setiap artefak yang perlu dipertahankan.
Manifest harus dibuat dengan urutan jalur yang tetap, pengodean UTF-8 yang dinyatakan, dan aturan akhir baris yang konsisten. Jangan masukkan token, kata sandi, jalur profil pribadi, cache, atau data rahasia. Untuk data yang tidak boleh didistribusikan, catat identitas, prosedur perolehan, dan batas akses tanpa menyisipkan byte terlarang.
Dalam notebook contoh, tabel sintetis diserialisasi dengan enam angka di belakang koma sebelum hash dihitung. Aturan serialisasi itu merupakan bagian dari kontrak. Mengubah jumlah angka, nama kolom, atau aturan akhir baris akan mengubah hash walaupun nilai matematis dasarnya hampir sama.
Daftar periksa sebelum menyatakan hasil dapat direproduksi
- Pertanyaan, tujuan penggunaan, dan batas klaim tertulis jelas.
- Data mentah tidak ditimpa; sumber, lisensi, tanggal, dan identitasnya tercatat.
- Semua transformasi data dapat dijalankan ulang dari input yang dinyatakan.
- Variabel, parameter, satuan, domain, dan asumsi model memiliki definisi tunggal.
- Versi Python dan pustaka dipatok.
- Benih acak dan algoritma pembangkit dinyatakan jika keacakan digunakan.
- Pemisahan data latih dan data uji terjadi sebelum estimasi.
- Notebook lulus mulai ulang dan jalankan semua dari keadaan bersih.
- Pemeriksaan numerik memiliki toleransi dan alasan.
- Gambar serta tabel berasal dari alur yang sama dengan angka yang dilaporkan.
- Manifest tidak memuat kredensial atau data yang tidak boleh disebarkan.
- Perubahan terhadap sumber atau versi sebelumnya dijelaskan.
Kegagalan yang sering terjadi
| Gejala | Penyebab yang mungkin | Perbaikan |
|---|---|---|
| Notebook hanya bekerja setelah beberapa sel dijalankan manual. | Keadaan tersembunyi atau urutan sel salah. | Mulai ulang, jalankan semua, dan pindahkan definisi sebelum pemakaian. |
| Hasil berubah pada setiap eksekusi. | Benih atau sumber keacakan tidak dikendalikan. | Buat pembangkit lokal dengan benih eksplisit dan uji beberapa benih secara terpisah. |
| Hasil sama, tetapi tidak diketahui data mana yang dipakai. | Asal-usul dan identitas data hilang. | Simpan sumber, waktu perolehan, aturan transformasi, jumlah byte, dan hash. |
| Galat pada data latih sangat kecil, tetapi prediksi buruk. | Pencocokan berlebih, kebocoran data, atau model di luar domain. | Pisahkan data lebih awal dan periksa residu serta data uji. |
| Dua komputer memberi digit terakhir yang berbeda. | Perbedaan pustaka atau aritmetika pecahan mengambang. | Patok lingkungan dan gunakan toleransi yang sesuai dengan skala masalah. |
| Manifest berubah setiap kali dibuat. | Urutan jalur, waktu, atau format serialisasi tidak tetap. | Urutkan jalur dan keluarkan metadata yang tidak deterministik. |
Ringkasan
Alur kerja reprodusibel mengubah perhitungan menjadi argumen yang dapat diaudit. Ia mengikat pertanyaan, data, asumsi, model, kode, lingkungan, pemeriksaan, dan artefak akhir dalam satu rantai yang terlihat. Notebook pendamping memperagakan rantai tersebut dengan model pendinginan sederhana: data sintetis dibuat dari benih tetap, parameter diestimasi hanya dari data latih, residu dan data uji diperiksa, serta identitas byte data dihitung. Reprodusibilitas komputasional ini belum menjawab apakah model paling tepat; ia memastikan bahwa pertanyaan itu dapat diajukan terhadap bukti yang sama.
Latihan Penguasaan
Soal 1
Sebuah laporan hanya menyertakan gambar hasil simulasi dan kalimat “dibuat dengan Python”. Susun daftar lima informasi paling penting yang masih diperlukan agar klaim numeriknya dapat diperiksa dan diulang.
Soal 2
Rancang struktur proyek untuk data pengamatan populasi mingguan. Jelaskan berkas mana yang tidak boleh disunting, berkas mana yang boleh dibuat ulang, dan tiga kolom minimum dalam manifest.
Soal 3
Untuk model pendinginan di atas, tentukan satuan , periksa bahwa eksponen tak berdimensi, dan jelaskan mengapa batas sesuai dengan proses pendinginan menuju suhu lingkungan.
Soal 4
Bandingkan np.random.seed(17) yang mengubah keadaan global dengan rng = np.random.default_rng(17) yang membuat pembangkit lokal. Jelaskan mengapa pembangkit lokal biasanya lebih mudah diaudit dalam proyek besar.
Soal 5
Hitung suhu yang diprediksi pada menit jika , , dan menit. Berikan jawaban hingga dua angka di belakang koma.
Soal 6
Jelaskan mengapa memilih data uji setelah melihat seluruh hasil dapat menghasilkan penilaian yang terlalu optimistis. Usulkan urutan kerja yang mencegah kebocoran informasi.
Soal 7
Jalankan notebook pendamping dari keadaan bersih. Catat hash tabel sintetis, estimasi kedua parameter, RMSE data latih, dan MAE data uji. Kemudian ubah hanya SEED dari 20260822 menjadi 20260823, jalankan ulang, dan jelaskan mana yang berubah, mana yang tetap, serta mengapa perubahan itu tidak boleh disembunyikan. Notebook menandai benih nonkanonik secara terlihat dan melewatkan hanya pemeriksaan angka kanonik; pemeriksaan struktur dan keterhinggaan tetap berjalan.