Analiza de sensibilitate este utilizată pentru a determina impactul unei colecții de factori independenți asupra unei variabile dependente în anumite condiții.
Este o abordare puternică pentru a determina modul în care rezultatul modelului este afectat de intrările modelului în termeni generali. În această postare, voi oferi o privire de ansamblu rapidă asupra analizei de sensibilitate folosind SALib, un pachet gratuit de analiză a sensibilității Python.
O valoare numerică cunoscută sub numele de indice de sensibilitate reprezintă frecvent sensibilitatea fiecărei intrări. Există mai multe tipuri de indici de sensibilitate:
- Indici de ordinul întâi: calculează contribuția unui singur model de intrare la varianța de ieșire.
- Indici de ordinul doi: calculează contribuția a două intrări ale modelului la variația de ieșire.
- Indicele de ordin total: cuantifică contribuția unui model de intrare la varianța ieșirii, cuprinzând atât efectele de ordinul întâi (inputul fluctuează singur), cât și orice interacțiuni de ordin superior.
Ce este SALib?
SALib este bazat pe Python open-source trusa de instrumente pentru efectuarea evaluărilor de sensibilitate. Are un flux de lucru detașat, ceea ce înseamnă că nu interacționează direct cu modelul matematic sau computațional. În schimb, SALib este responsabil de producerea intrărilor modelului (prin una dintre funcțiile eșantionului) și de calcularea indicilor de sensibilitate (prin intermediul uneia dintre funcțiile de analiză) din ieșirile modelului.
O analiză tipică a sensibilității SALib constă din patru pași:
- Determinați intrările modelului (parametrii) și intervalul de eșantionare pentru fiecare.
- Pentru a crea intrări de model, rulați funcția eșantion.
- Evaluați modelul folosind intrările generate și salvați rezultatele modelului.
- Pentru a calcula indicii de sensibilitate, utilizați funcția de analiză a ieșirilor.
Sobol, Morris și FAST sunt doar câteva dintre metodele de analiză a sensibilității oferite de SALib. Mulți factori influențează care abordare este cea mai bună pentru o anumită aplicație, așa cum vom vedea mai târziu. Deocamdată, rețineți că trebuie să utilizați doar două funcții, eșantionare și analiză, indiferent de tehnica pe care o utilizați. Vă vom ghida printr-un exemplu de bază pentru a ilustra cum să utilizați SALib.
Exemplu SALib – Analiza de sensibilitate Sobol
În acest exemplu, vom examina sensibilitatea Sobol a funcției Ishigami, așa cum se arată mai jos. Datorită neliniarității și nemonotonității sale ridicate, funcția Ishigami este utilizată pe scară largă pentru a evalua metodologiile de analiză a incertitudinii și a sensibilității.
Pașii merg după cum urmează:
1. Importul SALib
Primul pas este să adăugați bibliotecile necesare. Funcțiile de eșantionare și analiză ale SALib sunt păstrate distincte în modulele Python. Importarea eșantionului de satelit și funcțiile de analiză Sobol, de exemplu, sunt prezentate mai jos.
De asemenea, folosim funcția Ishigami, care este disponibilă ca funcție de testare în SALib. În cele din urmă, importăm NumPy, deoarece SALib îl folosește pentru a stoca intrările și ieșirile modelului într-o matrice.
2. Intrare model
Intrările modelului trebuie apoi definite. Funcția Ishigami acceptă trei intrări: x1, x2 și x3. În SALib, construim un dict care specifică numărul de intrări, numele acestora și limitele pentru fiecare intrare, așa cum se vede mai jos.
3. Generați mostre și modelul
Eșantioanele sunt apoi generate. Trebuie să creăm mostre utilizând eșantionerul Saltelli, deoarece facem o analiză de sensibilitate Sobol. În acest caz, valorile parametrilor sunt o matrice NumPy. Putem observa că matricea este 8000 cu 3 rulând valori param.formă. 8000 de mostre au fost create cu samplerul Saltelli. Samplerul Saltelli creează mostre, unde N este 1024 (parametrul furnizat de noi) și D este 3. (numărul de intrări ale modelului).
După cum sa menționat anterior, SALib nu este implicat în evaluarea modelului matematic sau computațional. Dacă modelul este scris în Python, de obicei veți parcurge fiecare eșantion de intrare și veți evalua modelul:
Mostrele pot fi salvate într-un fișier text dacă modelul nu este dezvoltat în Python:
Fiecare linie din param values.txt reprezintă o intrare de model. Ieșirea modelului ar trebui să fie salvată într-un alt fișier într-un stil similar, cu câte o ieșire pe fiecare linie. După aceea, ieșirile pot fi încărcate cu:
În acest exemplu, vom folosi funcția Ishigami de la SALib. Aceste funcții de testare pot fi evaluate după cum urmează:
4. Efectuați o analiză
Putem calcula în sfârșit indicii de sensibilitate după încărcarea rezultatelor modelului în Python. În acest exemplu, vom folosi sobol.analyze pentru a calcula primul, al doilea și indicii de ordin total.
Si este un dicționar Python care are cheile „S1”, „S2”, „ST”, „S1 conf”, „S2 conf” și „ST conf”. Tastele _conf dețin intervalele de încredere asociate, care sunt în general setate la 95 la sută. Pentru a scoate toți indicii, utilizați cuvântul cheie parametru print to console=True. Alternativ, așa cum este ilustrat mai jos, putem tipări valorile individuale din Si.
Putem vedea că x1 și x2 au sensibilitate de ordinul întâi, dar x3 nu pare să aibă niciun impact de ordinul întâi.
Dacă indicii de ordin total sunt semnificativ mai mari decât indicii de ordinul întâi, cu siguranță au loc interacțiuni de ordin superior. Putem vedea aceste interacțiuni de ordin superior analizând indicii de ordinul doi:
Putem observa că x1 și x3 au interacțiuni semnificative. După aceea, rezultatul poate fi transformat într-un Pandas DataFrame pentru un studiu suplimentar.
5. Complot
Pentru confortul dumneavoastră, sunt oferite facilități de bază de cartografiere. Funcția plot() produce obiecte pe axa matplotlib pentru manipularea ulterioară.
Concluzie
SALib este un set de instrumente sofisticat de analiză a sensibilității. Alte tehnici din SALib includ Testul de Sensibilitate la Amplitudine Fourier (FAST), Metoda Morris și Măsurarea Independentă Delta-Moment. Deși este o bibliotecă Python, este destinată să funcționeze cu modele de orice fel.
SALib oferă o interfață de linie de comandă ușor de utilizat pentru a crea intrări de model și pentru a evalua ieșirile modelului. Verifică Documentația SALib pentru a afla mai multe.
Lasă un comentariu