L'analisi di sensibilità viene utilizzata per determinare l'impatto di una raccolta di fattori indipendenti su una variabile dipendente in determinate condizioni.
È un approccio forte per determinare in che modo l'output del modello è influenzato dagli input del modello in termini generali. In questo post, fornirò una rapida panoramica dell'analisi della sensibilità utilizzando SALib, un pacchetto gratuito di analisi della sensibilità Python.
Un valore numerico noto come indice di sensibilità, rappresenta spesso la sensibilità di ciascun input. Esistono numerosi tipi di indici di sensibilità:
- Indici del primo ordine: calcola il contributo di un singolo input del modello alla varianza dell'output.
- Indici del secondo ordine: calcola il contributo di due input del modello alla varianza dell'output.
- Indice di ordine totale: quantifica il contributo di un input del modello alla varianza dell'output, comprendendo sia gli effetti del primo ordine (l'input che fluttua da solo) sia le interazioni di ordine superiore.
Cos'è SALib?
SALib è basato su Python open-source toolkit per fare valutazioni di sensibilità. Ha un flusso di lavoro separato, il che significa che non interagisce direttamente con il modello matematico o computazionale. SALib è invece responsabile della produzione degli input del modello (tramite una delle funzioni di campionamento) e del calcolo degli indici di sensibilità (tramite una delle funzioni di analisi) dagli output del modello.
Una tipica analisi di sensibilità SALib consiste in quattro fasi:
- Determinare gli input del modello (parametri) e l'intervallo di campionamento per ciascuno.
- Per creare input di modello, eseguire la funzione di esempio.
- Valuta il modello utilizzando gli input generati e salva i risultati del modello.
- Per calcolare gli indici di sensibilità, utilizzare la funzione di analisi sulle uscite.
Sobol, Morris e FAST sono solo alcuni dei metodi di analisi della sensibilità forniti da SALib. Molti fattori influenzano l'approccio migliore per una determinata applicazione, come vedremo in seguito. Per il momento, tieni presente che devi solo utilizzare due funzioni, campionare e analizzare, indipendentemente dalla tecnica che utilizzi. Ti guideremo attraverso un esempio di base per illustrare come utilizzare SALib.
Esempio SALib – Analisi della sensibilità di Sobol
In questo esempio, esamineremo la sensibilità di Sobol della funzione Ishigami, come mostrato di seguito. A causa della sua elevata non linearità e non monotonicità, la funzione di Ishigami è ampiamente utilizzata per valutare le metodologie di analisi dell'incertezza e della sensibilità.
I passaggi vanno come segue:
1. Importazione di SALib
Il primo passo è aggiungere le librerie richieste. Le funzioni di esempio e di analisi di SALib sono mantenute distinte nei moduli Python. L'importazione del campione satellitare e delle funzioni di analisi Sobol, ad esempio, è mostrata di seguito.
Utilizziamo anche la funzione Ishigami, disponibile come funzione di test in SALib. Infine, importiamo NumPy poiché SALib lo utilizza per archiviare input e output del modello in una matrice.
2. Input del modello
Gli input del modello devono quindi essere definiti. La funzione Ishigami accetta tre input: x1, x2 e x3. In SALib, costruiamo un dict che specifica il numero di input, i loro nomi e i limiti su ciascun input, come mostrato di seguito.
3. Genera campioni e il modello
I campioni vengono quindi generati. Abbiamo bisogno di creare campioni usando il campionatore Saltelli poiché stiamo facendo un'analisi di sensibilità Sobol. In questo caso, i valori di parametro sono una matrice NumPy. Possiamo osservare che la matrice è 8000 per 3 eseguendo param values.shape. Sono stati realizzati 8000 campioni con il campionatore Saltelli. Il campionatore Saltelli crea campioni, dove N è 1024 (il parametro che abbiamo fornito) e D è 3. (il numero di input del modello).
Come affermato in precedenza, SALib non è impegnata nella valutazione di modelli matematici o computazionali. Se il modello è scritto in Python, in genere esegui il ciclo di ogni input di esempio e valuterai il modello:
Gli esempi possono essere salvati in un file di testo se il modello non è sviluppato in Python:
Ogni riga in parametri values.txt rappresenta un input del modello. L'output del modello deve essere salvato in un altro file con uno stile simile, con un output su ciascuna riga. Successivamente, le uscite possono essere caricate con:
In questo esempio useremo la funzione Ishigami di SALib. Queste funzioni di test possono essere valutate come segue:
4. Eseguire l'analisi
Possiamo finalmente calcolare gli indici di sensibilità dopo aver caricato i risultati del modello in Python. In questo esempio, useremo sobol.analyze per calcolare il primo, il secondo e l'indice di ordine totale.
Si è un dizionario Python con i tasti "S1", "S2", "ST", "S1 conf", "S2 conf" e "ST conf". Le chiavi _conf contengono gli intervalli di confidenza associati, generalmente impostati al 95%. Per generare tutti gli indici, usa il parametro della parola chiave print to console=True. In alternativa, come illustrato di seguito, possiamo stampare i singoli valori da Si.
Possiamo vedere che x1 e x2 hanno una sensibilità del primo ordine, ma x3 non sembra avere alcun impatto del primo ordine.
Se gli indici dell'ordine totale sono significativamente più grandi degli indici del primo ordine, le interazioni di ordine superiore stanno sicuramente avvenendo. Possiamo vedere queste interazioni di ordine superiore osservando gli indici del secondo ordine:
Possiamo osservare che x1 e x3 hanno interazioni significative. Successivamente, il risultato può essere trasformato in un Pandas DataFrame per ulteriori studi.
5. Tracciare
Per tua comodità, sono forniti servizi di cartografia di base. La funzione plot() produce oggetti asse matplotlib per la successiva manipolazione.
Conclusione
SALib è un sofisticato toolkit di analisi della sensibilità. Altre tecniche in SALib includono il Fourier Amplitude Sensitivity Test (FAST), il metodo Morris e la misura indipendente del momento delta. Sebbene sia una libreria Python, è pensata per funzionare con modelli di qualsiasi tipo.
SALib offre un'interfaccia a riga di comando di facile utilizzo per la creazione di input del modello e la valutazione degli output del modello. Guardare Documentazione SALib per saperne di più.
Lascia un Commento