Аналіз чутливості використовується для визначення впливу сукупності незалежних факторів на залежну змінну за певних умов.
Це потужний підхід для визначення того, як на результат моделі впливають вхідні дані моделі загалом. У цій публікації я дам короткий огляд аналізу чутливості за допомогою SALib, безкоштовного пакета аналізу чутливості Python.
Числове значення, відоме як індекс чутливості, часто представляє чутливість кожного входу. Існує безліч типів індексів чутливості:
- Індекси першого порядку: обчислює внесок однієї моделі вхідних даних у вихідну дисперсію.
- Індекси другого порядку: обчислює внесок двох вхідних даних моделі до дисперсії вихідних даних.
- Індекс повного порядку: кількісно визначає внесок моделі в вихідну дисперсію, охоплюючи як ефекти першого порядку (саме коливання вхідних даних), так і будь-які взаємодії вищого порядку.
Що таке SALib?
SALib заснований на Python з відкритим вихідним кодом інструментарій для оцінки чутливості. Він має відокремлений робочий процес, що означає, що він не взаємодіє безпосередньо з математичною чи обчислювальною моделлю. Натомість SALib відповідає за створення вхідних даних моделі (за допомогою однієї з функцій вибірки) і обчислення індексів чутливості (за допомогою однієї з функцій аналізу) з вихідних даних моделі.
Типовий аналіз чутливості SALib складається з чотирьох кроків:
- Визначте вхідні дані (параметри) моделі та діапазон вибірки для кожного.
- Щоб створити вхідні дані моделі, запустіть функцію зразка.
- Оцініть модель, використовуючи згенеровані вхідні дані, та збережіть результати моделі.
- Щоб обчислити індекси чутливості, використовуйте функцію аналізу на виходах.
Sobol, Morris і FAST — це лише деякі з методів аналізу чутливості, наданих SALIb. Багато факторів впливають на те, який підхід є найкращим для даної програми, як ми побачимо пізніше. Наразі майте на увазі, що вам потрібно використовувати лише дві функції, вибірку та аналіз, незалежно від того, яку техніку ви використовуєте. Ми наведемо вас на базовому прикладі, щоб проілюструвати, як використовувати SALib.
Приклад SALib – аналіз чутливості Соболя
У цьому прикладі ми розглянемо чутливість Соболя функції Ішігамі, як показано нижче. Через свою високу нелінійність і немонотонність функція Ішігамі широко використовується для оцінки методологій аналізу невизначеності та чутливості.
Дії відбуваються наступним чином:
1. Імпорт SALib
Першим кроком є додавання необхідних бібліотек. Функції вибірки та аналізу SALib зберігаються окремо в модулях Python. Наприклад, імпорт супутникового зразка та функції аналізу Sobol показано нижче.
Ми також використовуємо функцію Ishigami, яка доступна як тестова функція в SALib. Нарешті, ми імпортуємо NumPy, оскільки SALIb використовує його для зберігання вхідних і вихідних даних моделі в матриці.
2. Введення моделі
Потім необхідно визначити вхідні дані моделі. Функція Ішігамі приймає три вхідні дані: x1, x2 і x3. У SALib ми створюємо dict, який визначає кількість входів, їх імена та обмеження для кожного входу, як показано нижче.
3. Створення зразків і моделі
Потім формуються зразки. Нам потрібно створити зразки за допомогою пробника Saltelli, оскільки ми проводимо аналіз чутливості Sobol. У цьому випадку значення параметрів є матрицею NumPy. Ми можемо помітити, що матриця має розмір 8000 на 3, запустивши param values.shape. За допомогою семплера Saltelli було створено 8000 зразків. Пробник Saltelli створює вибірки, де N дорівнює 1024 (параметр, який ми надали), а D дорівнює 3. (кількість вхідних даних моделі).
Як було зазначено раніше, SALib не займається оцінкою математичної чи обчислювальної моделі. Якщо модель написана на Python, ви зазвичай переглядаєте кожен зразок введення та оцінюєте модель:
Зразки можна зберегти в текстовий файл, якщо модель не розроблена на Python:
Кожен рядок у param values.txt представляє один вхід моделі. Вихід моделі слід зберегти в іншому файлі в подібному стилі, по одному виводу в кожному рядку. Після цього виходи можуть бути завантажені з:
У цьому прикладі ми збираємося використовувати функцію Ішігамі від SALIb. Ці тестові функції можна оцінити наступним чином:
4. Виконайте аналіз
Нарешті ми можемо обчислити індекси чутливості після завантаження результатів моделі в Python. У цьому прикладі ми будемо використовувати sobol.analyze для обчислення першого, другого та індексів загального порядку.
Si — це словник Python, який має ключі «S1», «S2», «ST», «S1 conf», «S2 conf» і «ST conf». Ключі _conf містять відповідні довірчі інтервали, які зазвичай встановлені на 95 відсотків. Щоб вивести всі індекси, використовуйте параметр ключового слова print to console=True. В якості альтернативи, як показано нижче, ми можемо надрукувати окремі значення з Si.
Ми бачимо, що x1 і x2 мають чутливість першого порядку, але x3, схоже, не має жодного впливу першого порядку.
Якщо індекси загального порядку значно більші за індекси першого порядку, безсумнівно, мають місце взаємодії вищого порядку. Ми можемо побачити ці взаємодії вищого порядку, подивившись на індекси другого порядку:
Ми можемо спостерігати, що x1 і x3 мають значні взаємодії. Після цього результат може бути перетворений у Pandas DataFrame для подальшого вивчення.
5. Побудова графіка
Для вашої зручності надаються основні засоби для створення графіків. Функція plot() створює об’єкти осі matplotlib для подальших маніпуляцій.
Висновок
SALib — це складний набір інструментів аналізу чутливості. Інші методи в SALib включають тест на амплітудну чутливість Фур’є (FAST), метод Морріса та незалежну міру від дельта-моменту. Хоча це бібліотека Python, вона призначена для роботи з моделями будь-якого типу.
SALib пропонує простий у використанні інтерфейс командного рядка для створення вхідних даних моделі та оцінки результатів моделі. Перевіряти Документація SALib щоб дізнатися більше.
залишити коментар