# Calcolatore dei parametri probabilistici del sonar (curve ROC)

Nel calcolo delle portate di scoperta del sonar sono impiegate le curve ROC per la valutazione del parametro $d=f[p(D),p(FA)]$ che è una delle variabili che concorrono nel computo del differenziale di riconoscimento:
$\Delta =5\cdot log_{10}{[(BW\cdot d)/(2\cdot RC)]}-10\cdot log_{10}{BW}$

## Utilizzo delle curve ROC per la determinazione della variabile d

Per la determinazione della variabile $d$, una volta stabilita la probabilità di falso allarme $p(FA)$ accettata e la probabilità di scoperta $p(D)$ voluta, si procede all'individuazione del $d$ tra le diverse rette disponibili nel diagramma delle curve ROC.
In figura 1 una particolare traccia delle curve ROC relativa al solo valore $d=2$; curva estrapolata dalla famiglia delle curve standard tra $d=1$ e $d=4$:
Il grafico mostra come l’intersezione tra la retta di ascissa $p(FA)=10\%$ e la retta di ordinata $p(D)=50\%$ individui un punto della retta $d=2$.
Dato che le curve ROC disponibili, su diversi testi relativi alle tematiche del sonar, mostrano soltanto sei curve per i valori: 1 ; 4 ; 9 ; 16 ; 25 ; 36 si comprende come sia estremamente difficile estrapolare valori del $d$ tra curve adiacenti.

## Una delle soluzioni del problema

Un metodo per il calcolo del parametro $d$ consiste nella soluzione delle due equazioni trascendenti:
$p(FA)=(1/2)\cdot [1-{(2/{\sqrt {\pi }})}\cdot \int _{0}^{q/{\sqrt {2}}}e^{-t^{2}}dt\quad ]$
$p(D)=(1/2)\cdot [1-{(2/{\sqrt {\pi }})}\cdot \int _{0}^{(q-{\sqrt {d}})/{\sqrt {2}}}e^{-t^{2}}dt\quad ]$
dove nella prima, impostato il valore della $p(FA)$ accettata, si determina la variabile $q$; nella seconda, inserendo il valore di $q$ calcolato in precedenza e impostando il valore di $p(D)$ voluto si ottiene il valore del $(d)$ relativo alla coppia : $p(FA);p(D)$.
La soluzione delle due equazioni è affidata a routine di calcolo iterativo da sviluppare su di un P.C. con le seguenti limitazioni:
* $p(FA)$ variabile da $0.1\%$ a $49\%$
* $p(D)>p(FA)$
* $p(D)<99.1\%$

## Le routine di calcolo

La routine di calcolo implementata nel P.C. è scritta in linguaggio Visual Basic, copiando gli algoritmi dal listato del programma in calce si può realizzare la routine in qualsiasi linguaggio.
Il pannello di controllo del calcolatore è mostrato in figura 2:

## Esempio di calcolo

Premessa:
Nelle due sezioni di calcolo ( sinistra e destra ), dopo l'esecuzione della routine, vengono indicati come dati calcolati valori di $p(FA)$ e $p(D)$ non sempre identici a quelli impostati, ciò dipende dall'anello di calcolo iterativo che procede a passi discreti, seppur piccoli, per non impiegare tempi di elaborazione eccessivi.
Più precisamente :
* nella sezione di sinistra il valore di $(q)$ corrisponde alla $p(FA)$indicata come "'dato calcolato'" e non alla $p(FA)$ "impostata" anche se tra i due valori le differenze sono minime.
* nella sezione di destra il valore di $(d)$ corrisponde alla $p(D)$ indicata come "dato calcolato" e non alla $p(D)$ "impostata" , anche in questo caso le differenze tra i due valori sono minime.
Un semplice esempio d'impostazione dati e calcolo.
S'inizia nella sezione di sinistra:
* Se la probabilità di falso allarme accettata è: $p(FA)=24\%$ si digita tale valore nel TextBox e si preme il pulsante verde dati a calcolo, il pulsante cambia colore in rosso nella fase di calcolo, una volta ultimata la fase il valore di $q=0.7$ compare nel nello shape del pannello di calcolo assieme al valore di $p(FA)=23.8822\%$ , valore di ricalcolo cmpatibile con $q=0.7$ e il pulsante diventa verde.
In automatico il valore di $q$ è trasferito alla sezione di calcolo di destra.
Si agisce ora nella sezione di destra:
* Se la probabilità di scoperta voluta è: $p(D)=40\%$ si digita tale valore nel TextBox e si preme il pulsante verde dati a calcolo, il pulsante cambia colore in rosso nella fase di calcolo, una volta ultimata il valore di $d=0.2$ compare nello shape del pannello di calcolo assieme al valore di $p(D)=40.01\%$ , valore di ricalcolo compatibile con $d=0.2$ e il pulsante diventa verde.
Il pannello relativo all'esempio è mostrato in figura 3:

## Il listato della routine di calcolo in Visual Basic

In ambiente di sviluppo Visual Basic inserimento degli oggetti nel Form come indicato in figura 4 nel rispetto della numerazione indicata in rosso..
Azione di copia e incolla del programma: