Vediamo degli algoritmi interessanti che riguardano la distribuzione normale o funzione Gaussiana. Avendo una popolazione, osserviamo un parametro (es. la statura), avendo media e deviazione standard della popolazione, sui grandi numeri posso creare un algoritmo che:
- consenta di determinare la probabilità di ricadere in un intervallo (es. compreso fra MIN a MAX)
- consenta di determinare la probabilità di essere superiore ad un intervallo
- consenta di determinare la probabilità di essere inferiore a quell'intervallo
Vediamo il codice Python per il primo caso:
ris=0
media=175
std=10
Ntot=10000
n=4
a=media-n*std
b=media+n*std
for i in range(Ntot):
ris+=(b-a)/Ntot*1/(2*3.141592653589793*std**2)**0.5*2.718281828459045**(-0.5*(a+i*(b-a)/Ntot-media)**2/std**2)
print("ris=",ris)
Consideriamo un intervallo totale, mettendo un limite numerico ±4std, ovvero partendo dal valore medio, ±4 volte la deviazione standard; in questo modo si ottiene un valore sufficientemente accurato (così come Nmax=10000 iterazioni è sufficiente), valore accurato al 99,993%. Se si necessita di maggiore accuratezza, sostituire es. ±5std e aumentare Nmax, ma spesso questo non è necessario.
NB: Il bello di questo esempio è che sostituendo i valori di media e std (deviazione standard) di una distribuzione di dati, posso replicare l'algoritmo su ogni settore, capite l'importanza di ciò!! Esempi:
- altezza uomini: media=175cm, std=10cm
- quoziente intellettivo (QI) standardizzato: media=100, std=15
- lunghezza del pene, nel mondo: media=13cm, std=1,89cm
- ... altro (qualunque set di dati di cui conosciamo media e deviazione standard)
Vediamo ora, fissato un valore X0, la probabilità di essere superiori o inferiori al risultato. Esempio, nella curva della statura maschile, con media=175cm e std=10cm (per il caso femminile invece, sostituire la media con 162cm e la deviazione standard probabilmente un po' inferiore a 10, diciamo circa 8cm), la percentuale di persone superiori al valore fissato 185cm e la percentuale (complementare) di quelle inferiori a tale misura. Anche qui, vediamo come semplicemente cambiando media, deviazione standard e valore di test (X0), possiamo applicare l'algoritmo a qualunque ambito!
ris=0
media=175
std=10
X0=185
Ntot=10000
n=4
a=media-n*std
b=media+n*std
for i in range(Ntot):
ris+=(b-a)/Ntot*1/(2*3.141592653589793*std**2)**0.5*2.718281828459045**(-0.5*(X0+i*(b-a)/Ntot-media)**2/std**2)
print("P(X0>media)=",ris)
print("P(X0<media)=",1-ris)
In questo caso, risulta P(X0>media) = 0,158 = 15,88% e P(X0<media) = 1-0,158 = 0,842 = 84,2%
Ovvero con altezza X0=185cm, la popolazione (uomini) ha probabilità del 15,88% di avere un valore superiore, 84,2% di avere valore inferiore.
È interessante quindi comprendere tutte le potenzialità che offre questo algoritmo, conoscendo media e deviazione standard di una popolazione oggetto di studio (popolazione abbastanza grande), qualunque sia la variabile considerata!