Mar 292014
 

Quando un istogramma di frequenze presenta più picchi siamo portati a supporre l’esistenza di un mix di popolazioni al suo interno.

Ma come fare per estrarre dall’istogramma i parametri delle popolazioni mescolate?

Se un istogramma raggruppa i dati di n popolazioni, mescolate tra loro, le incognite sono nx3:

  • le n medie delle popolazioni
  • le n deviazioni standard delle popolazioni
  • le n numerosità delle popolazioni.

Il problema non è ovviamente risolvibile mediante un sistema di equazioni lineari, ma esiste la possibilità di affrontarlo in modo empirico, con risultati soddisfacenti. Il metodo è il più banale di tutti, in quanto consiste nel provare numerosissime combinazioni di medie, deviazioni standard e valori di n sino a quando l’istogramma risultante non sia sufficientemente simile a quello dato. Ovviamente questo è un compito che solo un computer può affrontare.

Facciamo un esempio con due popolazioni.

Questo è l’istogramma di partenza:

Clip0002

E queste sono le due popolazioni estratte:

Clip0003

Confronto tra l’istogramma di partenza e quello prodotto dalle due popolazioni:

Clip0004

I parametri delle due popolazioni estratte:

 

media

ds

n

popolazione 1

11.13

6.98

154

popolazione 2

36.38

5.63

64

 

Un esempio, più complesso, con cinque popolazioni.

Istogramma di partenza:

Clip0005

E queste sono le cinque popolazioni estratte:

Clip0006

Confronto tra l’istogramma di partenza e quello prodotto dalle cinque popolazioni:

Clip0007

I parametri delle cinque popolazioni:

 

media

ds

n

popolazione 1

10.06

3.39

41

popolazione 2

24.52

5.55

78

popolazione 3

43.73

5.11

105

popolazione 4

72.74

8.30

132

popolazione 5

94.42

4.98

68

 

Tutto questo si può fare con Excel. La mano di un supervisore è comunque richiesta in quanto all’inizio occorre decidere (la cosa più importante) il numero delle popolazioni latenti e poi (ma questo non è importante) assegnare dei valori iniziali, del tutto arbitrari, di media, deviazione standard e numero di soggetti per ogni popolazione. Dopodiché il programma inizia calcolando il primo istogramma ottenuto con questi valori iniziali e l’errore rispetto all’istogramma di origine (errore stimato come la media della somma dei quadrati delle differenze tra le varie classi dell’istogramma originario e dell’istogramma prodotto dai dati inventati). Da questo momento l’algoritmo, ad ogni ciclo, modifica casualmente (entro un certo range) i valori iniziali, e per ogni nuovo valore calcola un nuovo istogramma e valuta la discrepanza rispetto all’istogramma originario. Se l’errore aumenta il nuovo valore viene rifiutato. Se invece diminuisce si accetta e parte un nuovo ciclo. Il processo continua sino a completare un certo numero di cicli prefissato ma può essere anche interrotto manualmente quando ad es. si vede che l’errore è diventato trascurabile. Normalmente con qualche migliaio di cicli (1-2 minuti di lavoro) si ottengono ottimi risultati.

Un noto problema in procedure come questa è quello dei cosiddetti minimi locali. Si può verificare un situazione in cui qualsiasi variazione dei valori entro un certo range non porti ad una riduzione dell’errore, per cui il processo va in stallo. Ci si rende conto di questo quando l’errore non diminuisce nonostante ilprogredire del numero dei cicli. Per risolvere questo problema basta aumentare, anche temporaneamente, il range di variazione dei valori (casella coefficiente di adattamento, 0.25 variazioni casuali fini – 4 variazioni casuali grossolane – normalmente si imposta 1), oppure modificare manualmente i parametri osservando quale è la popolazione con il maggiore errore (ma questa operazione è più delicata).

Le seguenti sono quattro schermate del fitting dell’ultimo istogramma. Notate il progressivo adattamento delle curve all’istogramma originario. I parametri iniziali sono del tutto arbitrari.Le medie (10, 30, 50, 70, 90) sono grossolanamente approssimate ai picchi. Le deviazioni standard: 5 per tutti. I valori n: 30 per tutti.

Il numero di cicli è fissato in 500

CICLO 1

fig.1

CICLO 10 – qualcosa si muove

fig.3

CICLO 41  – il fitting è già buono

fig.4

CICLO 500

Il fitting è ottimo. Anche aumentando di molto il numero di ciclo la l’errore non si riduce apprezzabilmente. Si possono leggere i valori delle medie, deviazioni standard e numerosità delle 5 distribuzioni.

fig.5

Note finali.

Purtroppo i nomi delle funzioni, sia quelle nello spreadsheet sia quelle nelle macro, variano a seconda della lingua e della versione di Office. Questo potrebbe creare problemi. Il mio programma  gira su Excel/Office 2010 in Inglese.

Il programma rallenta ovviamente con l’aumentare del numero di distribuzioni da estrarre. Per velocizzare il programma va molto bene restringere la finestra di Excel sino a lasciare visibili le sole caselle dell’errore ed i bottoni di comando (vedi figura). In questo modo,  non dovendo fare il refresh grafico delle caselle con le funzioni di calcolo,ho visto che  il programma diventa oltre 100 volte più veloce, ed effettua anche migliaia di cicli in pochi minuti. L’evoluzione del fitting può essere controllata dal valore di errore. Al termine si può espandere la finestra. Tutti i grafici sono ovviamente conservati ed aggiornati.

fig.6

Potete avere il programma inviandomi un email (gdiaz@unica.it).

Spiacenti, i commenti sono chiusi.

credits unica.it | accessibilità Università degli Studi di Cagliari
C.F.: 80019600925 - P.I.: 00443370929
note legali | privacy

Nascondi la toolbar