Jadual Kandungan[Sembunyi][Tunjukkan]
Analisis sensitiviti digunakan untuk menentukan kesan koleksi faktor bebas ke atas pembolehubah bersandar di bawah keadaan tertentu.
Ia merupakan pendekatan yang kukuh untuk menentukan bagaimana output model dipengaruhi oleh input model secara umum. Dalam siaran ini, saya akan memberikan gambaran ringkas analisis sensitiviti menggunakan SALib, pakej analisis sensitiviti Python percuma.
Nilai berangka yang dikenali sebagai indeks sensitiviti, selalunya mewakili kepekaan setiap input. Terdapat pelbagai jenis indeks sensitiviti:
- Indeks tertib pertama: mengira sumbangan input model tunggal kepada varians keluaran.
- Indeks tertib kedua: mengira sumbangan dua input model kepada varians keluaran.
- Indeks jumlah pesanan: mengukur sumbangan input model kepada varians keluaran, merangkumi kedua-dua kesan tertib pertama (input turun naik sahaja) dan sebarang interaksi tertib lebih tinggi.
Apa itu SAlib?
SAlib adalah berasaskan Python sumber terbuka toolkit untuk melakukan penilaian sensitiviti. Ia mempunyai aliran kerja yang terpisah, yang bermaksud ia tidak berinteraksi secara langsung dengan model matematik atau pengiraan. Sebaliknya, SALib bertanggungjawab untuk menghasilkan input model (melalui salah satu fungsi sampel) dan mengira indeks sensitiviti (melalui salah satu fungsi analisis) daripada output model.
Analisis sensitiviti SALib biasa terdiri daripada empat langkah:
- Tentukan input model (parameter) dan julat sampel untuk setiap satu.
- Untuk membuat input model, jalankan fungsi sampel.
- Nilaikan model menggunakan input yang dijana dan simpan keputusan model.
- Untuk mengira indeks sensitiviti, gunakan fungsi analisis pada output.
Sobol, Morris dan FAST hanyalah sebahagian daripada kaedah analisis sensitiviti yang disediakan oleh SALib. Banyak faktor mempengaruhi pendekatan yang terbaik untuk aplikasi tertentu, seperti yang akan kita lihat nanti. Buat masa ini, perlu diingat bahawa anda hanya perlu menggunakan dua fungsi, sampel dan analisis, tanpa mengira apa-apa teknik yang anda gunakan. Kami akan membimbing anda melalui contoh asas untuk menggambarkan cara menggunakan SALib.
Contoh SALib – Analisis Sensitiviti Sobol'
Dalam contoh ini, kita akan mengkaji sensitiviti Sobol bagi fungsi Ishigami, seperti yang ditunjukkan di bawah. Kerana ketaklinieran dan ketakmonotoniannya yang tinggi, fungsi Ishigami digunakan secara meluas untuk menilai ketidakpastian dan metodologi analisis sensitiviti.
Langkah-langkahnya adalah seperti berikut:
1. Mengimport SALib
Langkah pertama ialah menambah perpustakaan yang diperlukan. Fungsi sampel dan analisis SALib dikekalkan berbeza dalam modul Python. Mengimport sampel satelit dan fungsi menganalisis Sobol, sebagai contoh, ditunjukkan di bawah.
Kami juga menggunakan fungsi Ishigami, yang tersedia sebagai fungsi ujian dalam SALib. Akhir sekali, kami mengimport NumPy kerana SALib menggunakannya untuk menyimpan input dan output model dalam matriks.
2. Input Model
Input model kemudiannya mesti ditakrifkan. Fungsi Ishigami menerima tiga input: x1, x2, dan x3. Dalam SALib, kami membina dict yang menentukan bilangan input, nama mereka dan had pada setiap input, seperti yang dilihat di bawah.
3. Hasilkan Sampel dan Model
Sampel kemudian dijana. Kita perlu mencipta sampel menggunakan pensampel Saltelli kerana kita sedang melakukan analisis sensitiviti Sobol. Dalam kes ini, nilai param ialah matriks NumPy. Kita boleh perhatikan bahawa matriks ialah 8000 kali 3 dengan menjalankan nilai param.shape. 8000 sampel telah dibuat dengan pensampel Saltelli. Pensampel Saltelli mencipta sampel, dengan N ialah 1024 (parameter yang kami sediakan) dan D ialah 3. (bilangan input model).
Seperti yang dinyatakan sebelum ini, SALib tidak terlibat dalam penilaian model matematik atau pengiraan. Jika model ditulis dalam Python, anda biasanya akan mengulangi setiap input sampel dan menilai model:
Sampel boleh disimpan ke fail teks jika model tidak dibangunkan dalam Python:
Setiap baris dalam values.txt param mewakili satu input model. Output model harus disimpan ke fail lain dalam gaya yang sama, dengan satu output pada setiap baris. Selepas itu, output boleh dimuatkan dengan:
Dalam contoh ini, kita akan menggunakan fungsi Ishigami daripada SALib. Fungsi ujian ini boleh dinilai seperti berikut:
4. Lakukan Analisis
Kami akhirnya boleh mengira indeks sensitiviti selepas memuatkan keputusan model ke dalam Python. Dalam contoh ini, kami akan menggunakan sobol.analyze untuk mengira indeks tertib pertama, kedua dan jumlah.
Si ialah kamus Python yang mempunyai kekunci "S1," "S2," "ST," "S1 conf," "S2 conf," dan "ST conf." Kekunci _conf memegang selang keyakinan yang berkaitan, yang biasanya ditetapkan kepada 95 peratus. Untuk mengeluarkan, semua indeks, gunakan parameter kata kunci cetak untuk console=True. Sebagai alternatif, seperti yang digambarkan di bawah, kami boleh mencetak nilai individu daripada Si.
Kita dapat melihat bahawa x1 dan x2 mempunyai sensitiviti tertib pertama, tetapi x3 nampaknya tidak mempunyai sebarang kesan tertib pertama.
Jika indeks jumlah pesanan jauh lebih besar daripada indeks pesanan pertama, interaksi peringkat lebih tinggi pasti berlaku. Kita boleh melihat interaksi peringkat tinggi ini dengan melihat indeks tertib kedua:
Kita boleh perhatikan bahawa x1 dan x3 mempunyai interaksi yang ketara. Selepas itu, hasilnya boleh ditukar kepada Pandas DataFrame untuk kajian lanjut.
5. Memplot
Untuk kemudahan anda, kemudahan carta asas disediakan. Fungsi plot() menghasilkan objek paksi matplotlib untuk manipulasi seterusnya.
Kesimpulan
SALib ialah kit alat analisis sensitiviti yang canggih. Teknik lain dalam SALib termasuk Ujian Kepekaan Amplitud Fourier (FAST), Kaedah Morris dan Ukuran Bebas Momen Delta. Walaupun ia adalah perpustakaan Python, ia bertujuan untuk beroperasi dengan model apa-apa jenis.
SALib menawarkan antara muka baris arahan yang mudah digunakan untuk mencipta input model dan menilai output model. Semak keluar dokumentasi SAlib untuk mengetahui lebih lanjut.
Sila tinggalkan balasan anda