Анализата на чувствителност се користи за да се одреди влијанието на збирката независни фактори врз зависната променлива под одредени услови.
Тоа е силен пристап за определување како на излезот на моделот ќе влијаат влезните податоци на моделот во општа смисла. Во овој пост, ќе дадам брз преглед на анализата на чувствителност користејќи SALib, бесплатен пакет за анализа на чувствителност на Python.
Нумеричка вредност позната како индекс на чувствителност, често ја претставува чувствителноста на секој влез. Постојат многу видови на индекси на чувствителност:
- Индекси од прв ред: го пресметува придонесот на еден влезен модел на излезната варијанса.
- Индекси од втор ред: го пресметува придонесот на два влеза на моделот во излезната варијанса.
- Индекс на вкупен ред: го квантификува придонесот на влезниот модел на излезната варијанса, опфаќајќи ги и ефектите од прв ред (влезот флуктуира сам) и сите интеракции од повисок ред.
Што е SALib?
SALib е базиран на Пајтон со отворен код прибор за правење проценки на чувствителноста. Има одвоен работен тек, што значи дека не е директно во интеракција со математичкиот или пресметковниот модел. Наместо тоа, SALib е задолжен за производство на влезови на моделот (преку една од функциите на примерокот) и пресметување на индексите на чувствителност (преку една од функциите за анализа) од излезите на моделот.
Типична анализа на чувствителноста на SALib се состои од четири чекори:
- Определете ги влезовите на моделот (параметрите) и опсегот на примерокот за секој од нив.
- За да креирате влезови за модел, извршете ја функцијата примерок.
- Оценете го моделот користејќи ги генерираните влезови и зачувајте ги резултатите од моделот.
- За да ги пресметате индексите на чувствителност, користете ја функцијата за анализа на излезите.
Sobol, Morris и FAST се само неколку од методите за анализа на чувствителност обезбедени од SALib. Многу фактори влијаат кој пристап е најдобар за дадена апликација, како што ќе видиме подоцна. Засега, имајте на ум дека треба да користите само две функции, примерок и анализа, без оглед на техниката што ја користите. Ќе ве водиме низ основен пример за да илустрираме како да го користите SALib.
Пример SALib – Анализа на чувствителност на Собол
Во овој пример, ќе ја испитаме чувствителноста на Собол на функцијата Ишигами, како што е прикажано подолу. Поради неговата висока нелинеарност и немонотоност, функцијата Ишигами е широко користена за оценување на методологиите за анализа на несигурност и чувствителност.
Чекорите одат на следниов начин:
1. Увоз на SALib
Првиот чекор е да ги додадете потребните библиотеки. Функциите за примерок и анализа на SALib се чуваат различни во модулите на Python. Увезувањето на сателитски примерок и функциите за анализа на Sobol, на пример, е прикажано подолу.
Ја користиме и функцијата Ishigami, која е достапна како тест функција во SALib. Конечно, го увезуваме NumPy бидејќи SALib го користи за складирање на влезови и излези од моделот во матрица.
2. Влез на модел
Потоа мора да се дефинираат влезовите на моделот. Функцијата Ishigami прифаќа три влеза: x1, x2 и x3. Во SALib, ние конструираме дикт кој го одредува бројот на влезови, нивните имиња и границите на секој влез, како што се гледа подолу.
3. Генерирајте примероци и модел
Примероците потоа се генерираат. Треба да создадеме примероци користејќи го семплерот Saltelli бидејќи правиме анализа на чувствителноста на Sobol. Во овој случај, вредностите на параметрите се NumPy матрица. Можеме да забележиме дека матрицата е 8000 на 3 со извршување на вредностите на парамите.shape. Со семплерот Saltelli беа создадени 8000 примероци. Семплерот Saltelli создава примероци, каде што N е 1024 (параметарот што го дадовме) и D е 3. (бројот на влезови на моделот).
Како што беше претходно наведено, SALib не се занимава со математичко или пресметковно оценување на моделот. Ако моделот е напишан во Python, вообичаено ќе го вртите секој влезен примерок и ќе го процените моделот:
Примероците може да се зачуваат во текстуална датотека ако моделот не е развиен во Python:
Секоја линија во параметрите вредности.txt претставува еден влезен модел. Излезот на моделот треба да се зачува во друга датотека во сличен стил, со по еден излез на секоја линија. После тоа, излезите може да се вчитаат со:
Во овој пример, ќе ја користиме функцијата Ishigami од 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 ги вклучуваат Фуриеовиот тест за чувствителност на амплитудата (БРЗ), методот Морис и Независното мерење на делта-момент. Иако е библиотека на Python, таа е наменета да работи со модели од секаков вид.
SALib нуди лесен за употреба интерфејс на командната линија за креирање влезови за модел и проценка на излези од моделот. Проверете SALib документација за да дознаете повеќе.
Оставете Одговор