Analisis sensitivitas digunakan untuk mengetahui dampak kumpulan faktor independen terhadap variabel dependen dalam kondisi tertentu.
Ini adalah pendekatan yang kuat untuk menentukan bagaimana output model dipengaruhi oleh input model secara umum. Dalam posting ini, saya akan memberikan gambaran singkat tentang analisis sensitivitas menggunakan SALib, paket analisis sensitivitas Python gratis.
Nilai numerik yang dikenal sebagai indeks sensitivitas, sering kali mewakili sensitivitas setiap input. Ada banyak jenis indeks sensitivitas:
- Indeks orde pertama: menghitung kontribusi input model tunggal terhadap varians output.
- Indeks orde kedua: menghitung kontribusi dua input model terhadap varians output.
- Indeks orde total: mengkuantifikasi kontribusi input model terhadap varians keluaran, yang mencakup efek orde pertama (input berfluktuasi sendiri) dan interaksi orde tinggi apa pun.
Apa itu SALib?
SALib adalah berbasis Python open-source toolkit untuk melakukan penilaian sensitivitas. Ini memiliki alur kerja terpisah, yang berarti tidak berinteraksi langsung dengan model matematika atau komputasi. Sebaliknya, SALib bertanggung jawab untuk memproduksi input model (melalui salah satu fungsi sampel) dan menghitung indeks sensitivitas (melalui salah satu fungsi analisis) dari output model.
Analisis sensitivitas SALib yang khas terdiri dari empat langkah:
- Tentukan input model (parameter) dan rentang sampel untuk masing-masing.
- Untuk membuat input model, jalankan fungsi sampel.
- Evaluasi model menggunakan input yang dihasilkan dan simpan hasil model.
- Untuk menghitung indeks sensitivitas, gunakan fungsi analisis pada output.
Sobol, Morris, dan FAST hanyalah beberapa dari metode analisis sensitivitas yang disediakan oleh SALib. Banyak faktor yang mempengaruhi pendekatan mana yang terbaik untuk aplikasi tertentu, seperti yang akan kita lihat nanti. Untuk saat ini, perlu diingat bahwa Anda hanya perlu menggunakan dua fungsi, sampel dan analisis, terlepas dari teknik apa pun yang Anda gunakan. Kami akan memandu Anda melalui contoh dasar untuk mengilustrasikan cara menggunakan SALib.
Contoh SALib – Analisis Sensitivitas Sobol
Dalam contoh ini, kita akan memeriksa sensitivitas Sobol dari fungsi Ishigami, seperti yang ditunjukkan di bawah ini. Karena nonlinier dan nonmonotonisitasnya yang tinggi, fungsi Ishigami banyak digunakan untuk mengevaluasi metodologi analisis ketidakpastian dan sensitivitas.
Langkah-langkahnya sebagai berikut:
1. Mengimpor SALib
Langkah pertama adalah menambahkan perpustakaan yang diperlukan. Fungsi sampel dan analisis SALib tetap berbeda dalam modul Python. Mengimpor sampel satelit dan fungsi analisis Sobol, misalnya, ditunjukkan di bawah ini.
Kami juga menggunakan fungsi Ishigami, yang tersedia sebagai fungsi uji di SALib. Terakhir, kami mengimpor NumPy karena SALib menggunakannya untuk menyimpan input dan output model dalam matriks.
2. Masukan Model
Masukan model kemudian harus didefinisikan. Fungsi Ishigami menerima tiga input: x1, x2, dan x3. Di SALib, kami membuat dict yang menentukan jumlah input, nama mereka, dan batasan pada setiap input, seperti yang terlihat di bawah ini.
3. Hasilkan Sampel dan Model
Sampel kemudian dibuat. Kita perlu membuat sampel menggunakan sampler Saltelli karena kita sedang melakukan analisis sensitivitas Sobol. Dalam hal ini, nilai param adalah matriks NumPy. Kita dapat mengamati bahwa matriksnya adalah 8000 kali 3 dengan menjalankan param values.shape. 8000 sampel dibuat dengan sampler Saltelli. Sampler Saltelli membuat sampel, di mana N adalah 1024 (parameter yang kami sediakan) dan D adalah 3. (jumlah input model).
Seperti yang dinyatakan sebelumnya, SALib tidak terlibat dalam evaluasi model matematika atau komputasi. Jika model ditulis dengan Python, Anda biasanya akan mengulang setiap input sampel dan menilai model:
Sampel dapat disimpan ke file teks jika model tidak dikembangkan dengan Python:
Setiap baris di param values.txt mewakili satu input model. Output model harus disimpan ke file lain dengan gaya yang sama, dengan satu output di setiap baris. Setelah itu, output dapat dimuat dengan:
Dalam contoh ini, kita akan menggunakan fungsi Ishigami dari SALib. Fungsi pengujian ini dapat dievaluasi sebagai berikut:
4. Lakukan Analisis
Kami akhirnya dapat menghitung indeks sensitivitas setelah memuat hasil model ke Python. Dalam contoh ini, kita akan menggunakan sobol.analyze untuk menghitung indeks orde pertama, kedua, dan total.
Si adalah kamus Python yang memiliki kunci "S1," "S2," "ST," "S1 conf," "S2 conf," dan "ST conf." Tombol _conf menahan interval kepercayaan terkait, yang umumnya disetel ke 95 persen. Untuk menampilkan, semua indeks, gunakan parameter kata kunci print to console=True. Sebagai alternatif, seperti yang diilustrasikan di bawah, kami dapat mencetak nilai individual dari Si.
Kita dapat melihat bahwa x1 dan x2 memiliki sensitivitas orde pertama, tetapi x3 tampaknya tidak memiliki dampak orde pertama.
Jika indeks orde total secara signifikan lebih besar dari indeks orde pertama, interaksi orde tinggi pasti terjadi. Kita dapat melihat interaksi tingkat tinggi ini dengan melihat indeks tingkat kedua:
Kita dapat mengamati bahwa x1 dan x3 memiliki interaksi yang signifikan. Setelah itu, hasilnya dapat diubah menjadi Pandas DataFrame untuk studi lebih lanjut.
5. Merencanakan
Untuk kenyamanan Anda, fasilitas charting dasar disediakan. Fungsi plot() menghasilkan objek sumbu matplotlib untuk manipulasi selanjutnya.
Kesimpulan
SALib adalah perangkat analisis sensitivitas yang canggih. Teknik lain dalam SALib termasuk Uji Sensitivitas Amplitudo Fourier (FAST), Metode Morris, dan Pengukuran Independen Delta-Moment. Meskipun ini adalah pustaka Python, ini dimaksudkan untuk beroperasi dengan model apa pun.
SALib menawarkan antarmuka baris perintah yang mudah digunakan untuk membuat input model dan menilai output model. Periksa dokumentasi SALib untuk mempelajari lebih lanjut.
Tinggalkan Balasan