Pengujian regresi model numerik kacau

10

Ketika kita memiliki model numerik yang mewakili sistem fisik nyata, dan yang menunjukkan kekacauan (misalnya model dinamika fluida, model iklim), bagaimana kita bisa tahu bahwa model itu berkinerja sebagaimana mestinya? Kami tidak dapat membandingkan dua set output model secara langsung, karena bahkan perubahan kecil dalam kondisi awal akan secara dramatis mengubah output dari simulasi individu. Kita tidak dapat membandingkan keluaran model secara langsung dengan pengamatan, baik karena kita tidak pernah dapat mengetahui dengan cukup detail kondisi awal pengamatan, dan perkiraan numerik akan menyebabkan perbedaan kecil yang akan menyebar melalui sistem.

Pertanyaan ini sebagian diilhami oleh pertanyaan David Ketcheson tentang unit test kode ilmiah : Saya sangat tertarik pada bagaimana uji regresi untuk model seperti itu dapat diimplementasikan. Jika perubahan kondisi awal kecil dapat menyebabkan perubahan output besar (yang mungkin masih merupakan representasi realitas yang memadai), maka bagaimana kita dapat memisahkan perubahan tersebut dari perubahan yang disebabkan oleh parameter modifikasi, atau menerapkan rutinitas numerik baru?

tidak ada apa-apa101
sumber

Jawaban:

7

Yang dapat Anda bandingkan dalam kasus tersebut adalah statistik solusi Anda: rata-rata, momen lebih tinggi, fluks panas melintasi batas, dan jumlah integral lainnya. Lihatlah salah satu dari banyak makalah yang membahas model turbulensi untuk persamaan Navier-Stokes, misalnya: mereka penuh dengan plot spektrum daya, entalpies, entropi, enstrophies, dan kata-kata lain yang belum pernah Anda dengar sebelumnya . Semua adalah kuantitas integral dari aliran dan mereka dibandingkan dengan kuantitas integral yang sama yang dihitung dari simulasi dan / atau eksperimen lain.

Wolfgang Bangerth
sumber
Apakah Anda tahu contoh makalah yang bagus? Akan menjadi tambahan yang bagus untuk jawaban Anda.
naught101
Bukan dari atas kepala saya - saya bukan orang yang memodelkan turbulensi. Saya akan mulai dengan beberapa makalah yang lebih baru oleh Tom Hughes, dan bekerja dari sana.
Wolfgang Bangerth
Saya pikir ini adalah contoh yang baik menggunakan ringkasan statistik untuk menentukan rezim sistem dinamis: "Kesimpulan statistik untuk sistem dinamik ekologi nonlinier yang bising"
Jugurtha
4

Jika kode Anda dapat berjalan di rezim non-chaotic dari masalah mendasar Anda, terutama rezim non-chaotic di mana Anda dapat menggunakan metode solusi yang dibuat, Anda harus menulis tes regresi yang berjalan di rezim ini bahkan jika mereka tidak menarik bagi Anda . Jika tes ini gagal, maka Anda segera tahu bahwa ada yang salah dalam perubahan kode terbaru Anda. Kemudian Anda dapat beralih ke masalah yang lebih relevan secara fisik.

Bill Barth
sumber
Saya tidak berpikir bahwa seluruh model iklim dapat dijalankan demikian, tetapi mungkin komponen utama bisa. Sesuatu seperti tes unit super. Ide bagus.
naught101
2
Tapi itu intinya. Tes regresi Anda harus memiliki cakupan kode yang baik (gcov dan sejenisnya adalah teman Anda) dan harus berjalan cepat. Jika Anda menjalankan seluruh model iklim sebagai uji regresi harian Anda, saya curiga Anda membuang banyak waktu.
Bill Barth
Saya pikir saya lebih memikirkan: Anda menjalankan tes pada awalnya, dan kemudian menyimpan banyak metrik (seperti yang disebutkan dalam jawaban Wolfgang). Lalu Anda membuat perubahan, dan menjalankan tes lagi, dan membandingkan metrik yang sama dengan yang Anda simpan terakhir kali. Jika Anda telah meningkatkan model (atau model komponen-super), maka secara teoritis, semua metrik akan membaik, atau setidaknya tidak memburuk secara dramatis (kecuali jika Anda terlalu pas sebelumnya, atau sesuatu, tetapi Anda dapat membuat keputusan itu secara subyektif) . Saya kira tes dalam pengertian ini jauh lebih kualitatif, tetapi mereka masih bisa sangat berguna.
naught101
Seperti yang dibahas dalam jawaban ini , saya kira.
naught101
2

Pertama, saya akan fokus pada kalimat terakhir Anda, ketika Anda menyentuh beberapa hal berbeda dalam pertanyaan Anda, tetapi saya merasa itu cukup menangkap apa yang Anda minta. Jika Anda mengubah rutinitas numerik, Anda tidak boleh mengubah kondisi awal atau parameter sistem hingga Anda memvalidasi rutin baru dari yang lama. Pada tingkat terlemah saya melihat ini sebagai membandingkan beberapa waktu nilai rata-rata atas solusi Anda, dan mereka sedang dalam persetujuan (bahkan jika perilaku sementara menyimpang satu sama lain dalam kekacauan). Pada level terkuat, Anda akan mengharapkan dua rutinitas untuk mereproduksi perilaku transien penuh. Yang mana dari yang Anda inginkan, dan yang dapat diterima tergantung pada pertanyaan apa yang Anda tanyakan dan kesimpulan apa yang Anda ambil dari solusi.

Sejauh mengatakan apakah model "melakukan sebagaimana mestinya", itu adalah pertanyaan yang sama sekali berbeda. Ini tidak ada hubungannya dengan rutinitas numerik yang Anda pilih. Bagaimana Anda membangun model Anda, mulai dari asumsi yang disederhanakan hingga pengukuran / perhitungan parameter, Anda harus mendasarkan semua keputusan Anda pada fisika masalah, dan semoga pekerjaan sebelumnya dilakukan pada kasus yang sama. Anda mungkin dapat memvalidasi model dengan case sederhana yang direproduksi dalam pengaturan lab, tetapi ada kalanya bahkan itu non-sepele. Jika Anda tidak dapat menentukan parameter sistem yang penting dalam urutan besarnya, Anda tidak bisa mengharapkan orang mempercayai detail kecil yang Anda hitung dalam perilaku lokal sementara.

Pelihat Godric
sumber