I partecipanti alla maratona

In questo ultimo periodo sono stato molto preso da una serie di impegni lavorativi e non, che non ho avuto il tempo materiale per scrivere sul blog.

Ogni volta che tornavo a casa mi capitava di crollare addormentato senza bisogno di fare moltiplicazioni di sorta. 😉

Ma quando mi si e’ un po’ alleggerito il carico quotidiano, mi sono reso conto che stavo pensando già da qualche notte a scrivere un nuovo post e mi arrovellavo su quale argomento farlo ( ma non è che ci pensassi più di tanto, sia chiaro! una volta spenta la luce è questione di un paio di minuti e sono nel mondo dei sogni! ); ma ora l’articolo “La moltiplicazione delle cifre” mi ha fatto venire in mente che oltre a chi moltiplica le cifre per addormentarsi, c’è chi le somma per divertirsi alle spalle degli altri. 😀

(Lo so, stiamo raggiungedo dei livelli di perversione che sono di diversi ordini superiori alla capacità di sopportazione media delle persone, ma siamo veramente fatti male, non è che ci disegnino così 😀 )

Dunque: tempo fa, di domenica pomeriggio, ero a casa di amici sui colli non troppo distanti da dove abito. Quel giorno, dopo una grigliata improvvisata sul terrazzo di casa, siamo rimasti a veder scorrere, una fila lunga ed apparentemente interminabile di persone che stavano correndo una maratona. Il tempo non era un gran ché, ed un conto è stare vicino ad un barbecue acceso ed un altro correre per chilometri e chilometri indossando solo abbigliamento leggero ( tanto poi a fine gara, te ne devi liberare, altrimenti diventa parte dell’arsenale di armi chimiche proibite dalla Convenzione di Ginevra/1925 e succ. modifiche ).

Qualcuno commentò: “Eroi o pazzi, non saprei che aggettivo scegliere”

Un altro:  “Le due cose non si escludono a vicenda”

Ed un altro ancora: “Ma è contagioso ? Guarda quanti sono….. non è che mi toccherà fare il vaccino, vero ?”

Quanti sono“….mi risuonò in testa e decisi di provare una cosa elementare che mi avevano insegnato tanto tempo fa, ma non avevo mai avuto l’occasione di mettere in pratica. Mi misi ad osservare le pettorine delle persone che passavano e dopo un po’ dissi:

“Secondo me, fai bene a vaccinarti, che sono fra i diecimila e gli undicimila, più verso l’undici che verso il dieci”.

A parte qualche “BUUUUU” ed altri suoni di diniego di primordiale natura (molto primordiale, direi quasi cavernicola o troglodita, a scelta!!), ci fu una persona che andò immancabilmente a controllare le notizie on-line con lo smartphone. Il giornale non dava la cifra precisa ma affermava “quasi undicimila partecipanti”.  🙂

Alcuni presenti dissero che avevo “buttato li” un numero a caso. Non era in quel modo. Per prenderli in giro diedi loro una spiegazione che era molto lontano dalla realtà, ma che almeno li facesse sentire meno bischeri in quanto “ad una cosa così ci poteva pensare solo lui” (non si direbbe, ma sono una persona moooolto compassionevole 🙂 ). Alla fine riuscii a mettere assieme le distribuzioni gaussiane, i numeri di fibonacci, la Qabbalah, l’ultima cifra pari di Pi-greco ed altre cose che ora ( per fortuna ) mi sfuggono: Antani sarebbe stato fiero di me.

Ma la realtà è tremendamente più semplice: si trattava di fare una stima a campione di un insieme finito e sequenziale di numeri, campionato con un ordine casuale.

Detto così fa paura. 😛

In altre parole dovevo capire quanti fossero i corridori, sapendo che avevano le pettorine inizialmente in serie, che poi si sarebbero rimescolati ed avrei potuto vederne solo alcuni (ché non ho pazienza a sufficienza per stare a guardarli tutti quanti 😉 ).

Ma in realtà per capire quanti fossero stati i corridori sapevo alcune cose:

  • le magliette venivano date in sequenza,
  • durante la corsa la sequenza iniziale viene rimescolata a caso.
  • sommando assieme un certo numero non consecutivo dei numeri sulle magliette, avrei avuto una stima della media dei numeri
  • la media dei numeri in un insieme di corridori è circa LA META’ del numero massimo

Gioco finito! 😀

Ma cosa ho fatto in pratica ?

Nota per gli esperti della materia: ho sacrificato il rigore matematico in questa esposizione a favore della comprensibilità per coloro che non “masticano” troppo di matematica: che gli esperti mi perdonino per questo sacrilegio! 😀

Ho contato 4 gruppi di persone di dieci ognuno, ed ho calcolato la media dei numeri che comparivano sulla maglietta.

Poichè tutte e 4 le medie erano intorno al 5400 allora e’ stato facile dire che il massimo numero delle magliette poteva essere intorno a 10800. Per essere tranquilli ho allargato l’intervallo dicendo fra i diecimila e gli undicimila, ma con la stima più prossima all’undici… ed è andata bene così.

Perché questa cosa ha funzionato ?

Perché stavamo lavorando con numeri grandi di partecipanti, perché le magliette non venivano assegnate per bravura ma solo per ordine di presentazione ai “box” di partenza, perché i campioni scelti a caso ( veramente a caso ) erano tutti omogenei.

In pratica con 10 somme veloci, una divisione ed una moltiplicazione per 2 potete tranquillamente fare i geni incompresi 😉

Vediamo ora di dare una formalizzazione migliore del procedimento che ho usato.

Cominciamo con un esempio. Ed immaginiamo che i corridori fossero soltato 110, per non eccedere nelle difficoltà di conteggio, e limitiamo l’ampiezza del campione a 5 elementi consecutivi. Qua sotto vi faccio vedere un esempio di un foglio di calcolo che si può facilmente costruire per replicare quello che dico ( io uso OpenOffice Calc ma vanno bene anche tutti gli altri ). Scriviamo nello spreadsheet le formule come segue

  A B C
1 max corridori    
2 Elemento 1 =CASUALE.TRA(1;B1)  
3 Elemento 2 =CASUALE.TRA(1;B1)  
4 Elemento 3 =CASUALE.TRA(1;B1)  
5 Elemento 4 =CASUALE.TRA(1;B1)  
6 Elemento 5 =CASUALE.TRA(1;B1)  
7 Media =MEDIA(B2:B6)  
8 Massimo =B7*2

possiamo vedere che, all’inizio le celle dove sono le formule ( riconoscibili perchè cominciano con il simbolo “=” ) sono vuote o segnano zero; inserendo il valore 110 nella cella B1 otterremo a seconda dei casi (nel senso statistico del termime, ovvero dei numeri casuali generato dalla funzione del foglio di calcolo):

A B C
1 max corridori ( lo impongo io nel foglio di calcolo ) 110  
2 Elemento 1 72  
3 Elemento 2 51  
4 Elemento 3 91  
5 Elemento 4 27  
6 Elemento 5 31  
7 Media 54,4  
8 Massimo 108,8

Nota Molto Bene: siccome la funzione CASUALE.TRA(minimo;massimo) genera dei numeri casuali è impossibile altamente improbabile che, pur inserendo la stessa formula nel foglio di calcolo, escano gli stessi numeri che sono usciti a me e che sono riportati nell’esempio.

Allora, come possiamo dire che la stima che ho fatto è una buona stima ? Se vogliamo aumentare la precisione della stima possiamo percorrere 2 vie:

  1. aumentare la dimensione del campione.
  2. controllare che il campione sia ben “distribuito” sull’intervallo presunto di variazione della grandezza in esame.

Nel primo caso, posso dire “5 elementi soli non bastano, ne conto 20 e faccio la mia stima, che sarà sicuramente migliore di quella fatta su 5”. Questa affermazione è fondata perchè esiste un teorema [ anzi ne esistono più di uno e sono chiamati “teoremi del limite centrale ] che dice dice proprio questo: se prendo un campione più grande per stimare i parametri di un gruppo la stima – entro certe ipotesi – sarà migliore. Questo comporta un aumento della difficoltà computazionale ( contare più corridori, fare più somme a mente, dividere per un numero più grande ) ma non è detto che il valore scelto da noi come camione “allargato” rispetto all’originale sia migliore di esso.

 Nel secondo caso invece faccio altre considerazioni

Vediamo meglio il secondo caso e proviamo a ripetere più e più volte la simulazione appena fatta,

A B C D F G H I J K L
1 max corridori 110 110 110 110 110 110 110 110 110 110
2 Elemento 1 101 87 22 76 66 1 65 64 67 26
3 Elemento 2 49 40 105 4 4 23 17 68 96 42
4 Elemento 3 67 91 64 6 52 70 79 23 106 80
5 Elemento 4 3 48 83 92 92 95 50 105 78 63
6 Elemento 5 41 3 103 89 64 67 84 19 92 11
7 Media 52,2 53,8 75,4 53,4 55,6 51,2 59 55,8 87,8 44,4
8 Massimo 104,4 107,6 150,8 106,8 111,2 102,4 118 111,6 175,6 88,8

E’ evidente che alcune di queste simulazioni, sono abbastanza vicine al valore massimo imposto, altre NO. Ma c’é un modo per capire quali sono delle buone stime oppure no ?

Notate bene: le sequenze che danno valori molto lontani dalla realtà ( tipo la colonna D ) è composta di valori molto vicini all’estremo superiore dell’insieme  (22,64,83,103,105). Se li stendiamo su una linea avremo un grafico tipo quello riportato sotto:

Distribuzione del campione della colonna D

Come si può vedere, i punti sono disposti più verso destra che verso sinistra. Se fossero pesi su una altalena essa penderebbe a destra.

Se la situazione fosse un po’ più equilibrata, come in figura:

la stima ottenuta sarebbe migliore. Ma come si può dire che la situazione è “più equilibrata” in termini matematici ? Per esempio possiamo dire che le distanze fra i punti rossi ( i campioni osservati ) adiacenti sono omogenee: gli scarti fra loro sono contenuti.

In altri termini si può dire che i campioni osservati si distribuiscono quasi omogeneamente lungo tutto il range delle osservazioni in modo da approssimare una distribuzione unifome discreta ( “discreta” ovvero non continua ), qualcosa tipo quello riportato nella figura sotto:

Distribuzione Discreta Uniforme ( compresa fra 0 ed 1 , con Quinincrementi di 0,2 )

Possiamo dire che il campione, che uso per stimare il numero massimo di corridori, è un buon rappresentante del tutto se “si spalma bene (omogeneamente)” fin dove posso osservare.

Nota bene: qualcuno può aver notato che quello che descrivo qui è molto simile a quello di cui ho parlato nel post “Quanti sono ?”. Effettivamente è così: cambio il soggetto di applicazione ma il metodo è sempre lo stesso, perché quello che sto facendo è lo stesso ovvero: cercare di determinare una proprietà del “tutto” a partire dalle proprietà di una “parte”:

Vediamo se però è possibile trovare un nuovo metodo per capire quante persone partecipano alla maratona.

Una idea potrebbe essere quella illustrata in figura :

dove i pallini rossi sono i numeri del campione scelto, avendo immaginato che i campioni stessi siano stati ordinati in modo crescente, e d0, d1…. d4 sono le differenze fra 2 numeri consecutivi. Il problema in questo caso si riduce nel dare una stima dell’ultimo tratto, ovvero quello indicato da “????“. Come facciamo ad avere un valore ragionevole per tale tratto ?

Un primo approccio potrebbe essere quello di pensare il tratto sconosciuto lungo quanto la media degli altri tratti: ovvero

\frac {d0+d1+d2+d3+d4}{5}

che nel caso generico diventerebbe

\frac {d0+d1+....+dn}{n+1}

o scritto in termini più “matematici”

\frac { \sum_0^n d_i }{n+1}

che, sviluppando tutti i conti ( operazione che vi risparmio ) avremo che tale espressione vale \frac{x_n}{n} - 1 dove x_n sarebbe il valore più grande che compare nel campione diviso il numero di elementi del campione stesso [che graficamente corrisponde al tratto contrassegnato con “????” nella figura vista sopra]. Di conseguenza ora sappiamo che l’ampiezza della popolazione che stiamo analizzano è pari al valore del più grande elemento osservato a cui va sommato il valore di “????” ovvero:

{x_n} + \frac{x_n}{n} - 1

Questa formula viene chiamata “stimatore UMVUE” (Uniformly Mininimum Variance Unbiased Estimator): essa è uno strumento che sfrutta la varianza (dispersione nei dati) per capire quanto è grande la popolazione originale. Questo stimatore può efficacemente essere usato in tutti gli insiemi dove è presente una qualche forma di numerazione intrinseca, tipo il numero di matricola degli studenti si un certo corso (in questo caso però bisogna che ad ogni corso il numero di matricola venga azzerato), delle licenze dei taxi di una certa città, delle licenze per i cercatori di funghi di una data zona e chi più ne ha più ne metta.

Vi lascio il divertimento di provare come più vi aggrada! 😉

Advertisements

5 pensieri su “I partecipanti alla maratona

  1. Una domanda a cui non riesco a dare risposta: c’è un modo di discriminare se un gruppo di dati (5 numeri e la corrispondente media) è poco verosimile e dunque non dovrebbe essere considerato? Un metodo spiccio potrebbe essere quello di tagliare “le code” dei valori di media ottenuti (il massimo 87,8 ed il minimo 44,4). Ho giocherellato con i numeri calcolando medie, deviazioni standard e tutto quanto mi sembrasse utile come indicatore, ma ricado sempre nel problema di avere un riferimento a cui rapportare i valori ottenuti.

    • Questa è una bella domanda, sai ? Secondo me, siccome siamo di fronte a dati campionari casuali, un sistema discriminante ( forse l’unico ) per capire se il campione in questione è “buono” ( e quindi sono verosimili i dati estrapolati da esso su tutta la popolazione ) potrebbe essere quello di effettuare la stima con 2 metodi diversi: uno col metodo della media – che e’ il primo metodo che ho esposto – e confrontarlo poi con i risultati ottenuti da un altro stimatore – ad esempio il metodo della minima varianza dei dati. In ogni caso trovandoci di fronte a variabili “aleatorie” non avremo mai la certezza assoluta del risultato che abbiamo. Un ulteriore modo di provare la robustezza del risultato ottenuto potrebbe essere quello di provare su più campioni indipendenti (durante la maratona usai il metodo delle medie su 5 campioni indipendenti dei quali poi scartai i risultati che si trovavano nelle “code” ): se i risultati coincidono o distano di poco…. si può ragionevolente supporre che il risultato sia corretto.
      La mia riposta come noterai è empirica, ed il problema della “stima ottima” delle variabili campionarie è un problema aperto della statistica; pensa soltanto alla validità degli exit poll dei sondaggi elettorali….

      • Sempre empiricamente mi viene da dire che è meglio allargare e/o moltiplicare i campioni (dicesi “hot water discovery” 🙂 ). Infatti potrebbe capitare di avere un campione di numeri consecutivi (1, 2, 3, 4, 5 ad esempio, varianza = 1) spostati verso il minimo (noto) dei valori e da questo trarre una stima completamente errata: cosa ne so a priori che 5 non è il “vero” massimo?
        In più in questo caso specifico il fatto che i valori non possano ripetersi dovrebbe comunque aiutare a migliorare la stima finale, con poca influenza sul metodo usato. Dovrei fare qualche simulazione (far macinare un po’ di numeri al pc!) per capire fino a che punto conviene allargare il campione per ottenere un risultato affidabile. Ovvero: estraggo N campioni di M elementi ciascuno da una sequenza di numeri la cui lunghezza S non mi è nota a priori e verifico a posteriori quanto le stime si discostano dal valore reale, in modo da capire il limite di N e M al quale le stime convergono. Tutto questo facendo variare N, M e S in range ampi e raccogliendo i dati in un file CSV per successive analisi: altrimenti cosa ce l’abbiamo a fare il computer? Solo per cazzeggiare su Internet? 🙂

      • Sarebbe quantomeno uno spreco di risorse: per il cazzeggio oggi come oggi basterebbe uno smartphone per qualche giochillo ed un po’ di “vita social”.
        Comunque vediamo che riesco a fare con questi numeretti e se ne viene fuori qualcosa di interessante…

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...