La Statistica è così poetica!

Il mese scorso ad Edinburgo si è tenuta l’annuale Scottish Governement Statistical Conference. Il contenuto delle presentazioni è stato più amministrativo che tecnico: gli oratori hanno di fatto presentato la strategia Open Data e il nuovo sistema organizzativo del dipartimento statistico del governo.

In mezzo a tutta ‘sta noia però, si è anche tenuta una sfida poetica: ogni partecipante alla conferenza poteva inviare una poesia alla giuria, a patto fosse di contenuto statistico.

Orbene, come immaginerete non ho potuto esimermi dalla tentazione di diventare un Omero statistico per consegnarmi alla Gloria eterna. Ecco dunque il testo incriminato:

The Outlier legacy (or violation of Normality)

Unmodelled by LM:

Thou, be not like the Median,

but a Life of Deviance.

Ovviamente, quando morirò, qualche critico scoprirà questa poesia e scriverà pagine e pagine di interpretazione rompendo i maroni a poveri studenti liceali.

Oppure no.

Breve digressione Natalizia sul confronto distribuzionale.

Recentemente al lavoro, ho dovuto scrivere un software che introduca della variabilità nei dati del Censo Scozzese. La motivazione di questa operazione è di proteggere la privacy dei cittadini, rendendo impossibile risalire agli utenti partendo dai dati.

Ovviamente, tale operazione, se fatta in maniera erronea, può portate a dei bias nei dati e inquinare tutte le potenziali analisi.

Dunque, come controllare che i dati processati siano simili ai dati originali?

In gergo statistico, fare questo procedimento significa controllare che le due serie di dati provengano dalla stessa distribuzione. Il test per eccellenza da utilizzare in questo caso è l’altisonante Kolmogorov-Smirnov. In generale, le comparazioni distribuzioni sono utilissime: ad esempio per controllare che misurazioni provenienti da due processi differenti possano essere analizzate usando gli stessi metodi. Insomma, per ipotizzare una somiglianza da due processi apparentemente diversi.

In R, il test di Kolmogorov-Smirnov può essere eseguito con la seguente funzione:

ks.test() {stats} 

 

Le assunzioni del modello lineare

In un articolo precedente abbiamo descritto la meccanica di un modello lineare. Come accennato, questi modelli sono costruiti su quattro assunzioni (because there’s no free lunch):

  • Normalità degli errori \epsilon_{i}
  • Deviazione standard degli errori costante
  • Indipendeza degli errori
  • Linearità della relazione tra la risposta e le variabili indipendenti

La violazione di questi requisiti causa conseguenze più o meno gravi sull’affidabilità del modello. Tuttavia, grazie a vari test, è possibile identificare e controllare se tali violazioni esistano. Nei paragrafi seguenti si illustrerà come eseguire questi test con R e la relativa matematica sottostante.

Da tenere a mente: gli errori di un modello sono definiti come:

\epsilon_{i} = y_{i} - \hat{y}_{i}

dove:

  • y_{i}: è il valore della risposta osservato.
  • \hat{y}_{i}: è il valore della risposta predetto dal modello.

Solitamente, per controllare queste assunzioni, gli errori devono essere standardizzati, ossia ridotti a seguire una distribuzione Normale con media 0 e dev standard uguale ad 1.

r_{i}^{s} = \frac{r_{i}}{\sqrt{s^{2}(1-h_{i,i})}}

h_{i,i} è la diagonale di una matrice, chiamata design matrix. Lasciamola da parte: l’importante è ricordarsi che gli errori standardizzati dovrebbero (se tutte le assunzioni sono rispettate) seguire una N(0,1).

Normalità

Gli errori dovrebbero essere approssimativamente distribuiti secondo una Normale con media zero e deviazione standard \sigma. Per controllare questa assunzione possiamo sia fare un test visivo che numerico.

Il test visivo consiste nel creare un QQ Plot, ossia raffigurare gli errori standardizzati contro un campione casuale di una N(0,1): se gli errori sono Normalmente distribuiti, essi devono posizionarsi sulla diagonale del piano:

Sinistra: errori distribuiti secondo N(0,1). Destra: normalità pesantemente violata.

Come test numerico invece, esistono numerose alternative (e siete liberi di procedere come meglio preferite). Per quanto mi riguarda uso (quasi) sempre il Shapiro-Wilk dove H0 è ‘Normalità rispettata’. In R:

shapiro.test(residuals(linearModel))

dove shapiro.test() è la funzione del test vera e propria e residuals(linearModel)) calcola gli errori per il nostro modello lineare.

La normalità tuttavia non è un’assunzione critica; violazioni minime possono essere comunque considerate accettabili.

Linearità

Per un modello lineare semplice, deve esistere una relazione lineare tra ogni variabile indipendente e quella dipendente. Per controllarla, basta un grafico della variabile in questione contro la dipendente: i punti devono posizionarsi in lungo una linea retta.

Omoschedasticità

Ossia varianza degli errori costante (chiamarla omoschedasticità però vi farà sembrare molto più professionali). Per controllarla, è necessario il test di Breusch-Pagan, dove H0 è ‘omoscedasticità rispettata’.

In R: ncvTest(linearModel)

Varianza degli errori costante è un’assunzione critica per un modello statistico: se non è rispettata può portarci a concludere che alcune variabili indipendenti siano utili per spiegare la dipendente, quando in realtà non lo sono. Ossia, ci può portare a trarre conclusioni errate sulle relazioni tra le variabili. Per risolvere questo problema, bisognerà abbandonare il modello lineare semplice per avventurarsi con qualche altro strumento (un GLS per esempio).

Indipendenza

Per indipendenza si intende che l’errore non deve essere correlato all’errore i + 1. Per controllarla, anche in questo caso, è possibile eseguire un test: il Durbin-Watson.

In R si esegue cosí durbinWatsonTest(linearModel). 

L’indipendenza è un’altra assunzione critica. Come per l’omoschedasticità, violazioni possono portare a erronee stime delle deviazioni standard, con conseguenti errori nei test di significatività. Un GLS potrebbe di nuovo essere una soluzione.

Sul futuro della Data Science

La Data Science e l’Intelligenza Artificiale sono sempre più vicine. tenetevi pronti.

Nell’ultima decade, i Data Scientist si sono focalizzati soprattutto sull’analisi di dati provenienti da web; difatti, tra il web 1.0 e il web 2.0 gli analisti si accorsero dell’enorme mole di dati disponibile a costo nullo che emergeva dal www. Questa mole di dati noscondeva inoltre un impressionate valore inutilizzato, pronto per essere raccolto con metodi statistici e visivi.

Azzarderei oltretutto ad affermare che, senza questa fase di ‘dati web’, la Data Science non sarebbe mai diventata così figa e di moda come ora. Infatti, durante questi anni sono stati costruiti algoritmi fantastici per comprendere il Web ed automatizzare il maggior numero possibile di operazioni: ormai i frutti più bassi dell’albero sono stati raccolti. L’innovazione contemporanea nella Data Science sul web si basa sopratutto sull’ottimizzazione di tali algoritmi e sull’aggiustamento di particolari (e possiamo dire, marginali) aspetti tecnici.

Quale sarà dunque il futuro della Data Science?

La sorgente di dati del Web, inaridendosi di grandi opportunità di innovazione, lascierà spazio a nuove fonti di dati. Ritengo che questo spazio sarà riempito da dati di origine fisica, ossia dati da sensori misuranti l’ambiente in cui l’Uomo interagisce ogni giorno. Pensiamo, ad esempio, alle enormi opportunità di analisi ed automazione che scaturiranno dall’Internet delle cose. Oppure dal vasto mondo di sensori medici: difatti, uno dei campi che nel futuro sarà maggiormente coinvolto dalla marea statistica, sarà proprio la Medicina (Wired sembra essere d’accordo).

Ritengo dunque che nella prossima decade, la sfida più eccitante per i Data Scientist sarà quella di creare ecosistemi e algoritmi partendo da dati di sensori: si genererà tutta una nuova serie di domande e necessità sia hardware che software.

Insomma, automazione sarà una delle parole chiave per il futuro prossimo della materia.

Regressione Lineare e diventare milionari

Regressione Lineare: predire le vendite

Ogni affarista che si rispetti dovrà prima o poi fare delle proiezioni di vendite: vuoi per ordinare il volume corretto dai fornitori, vuoi per dimostrare la validità del business ai finanziatori oppure per fare colpo con quanti affari farà il prossimo anno; le motivazioni sono molteplici e più o meno mondane. Ed ecco che il Data Scientist arriva in salvataggio! (E tornerà a casa con una bella parcella…)

Questo primo tutorial insegnerà proprio come, partendo da dati pre-esistenti, sia possible predire le future vendite di un business. Naturalmente, da buon accolito della statistica, non potrò esimermi da presentare la matematica sottostante: se ti annoia, salta alla sezione successiva dove mostrerò il lato pratico usando R.

1. Il Dataset

Il dataset che useremo si trova pre installato in R, ed è chiamato freeny. Di dimensioni 39×5 [39 righe/osservazioni x 5 colonne/variabili], rappresenta le vendite trimestrali di un non ben identificato business. Le variabili presenti sono:

  1. y: le vendite. Notate la notazione: in statistica/Data Science,  identifica sempre la variabile da predire, anche chiamata variabile dipendente risposta (in inglese, dependent variable/response).
  2. lag.quarterly.revenue: le vendite del trimestre precedente.
  3. price.index: livello dei prezzi dei beni venduti.
  4. income.level: livello degli stipendi della clientela.
  5. market.potential: indice dell’attrattività del mercato.

Ecco una vista di come appare:

Il dataset freeny.

Nota: per creare modelli di forecasting utilizzeremo sempre dataset in forma matriciale.

2. La Regressione Lineare (LM)

la matematica no!

Come accennato precedentemente, il nostro obbiettivo è quello di predire le vendite per un trimestre futuro. Qual’è il ragionamento da seguire? Noi, esseri mortali, non conosciamo le vendite future dato che non si sono ancora verificate. Tuttavia, abbiamo a nostra disposizione una serie di altre variabili di cui conosciamo perfettamente il valore, anche futuro. In questo caso ad esempio, conosciamo le vendite passate (lag.quarterly.revenue), possiamo decidere che prezzo mettere (price.index), sappiamo il livello degli stipendi (income.level) tramite l’Eurostat e conosciamo anche il potenziale di un certo mercato (market.potential), magari tramite un sondaggio. Qual’è dunque il procedimento più logico per raggiungere il nostro obbiettivo? Spiegare le vendite come una funzione delle variabili a noi note; in altre parole, cercare una relazione tra le vendite e tutto il resto.

In Statistica, questo tipo di relazione, viene chiamato regressione. La forma funzionale più semplice è la seguente:

y_{i} = \beta_{0} + \beta_{1}x_{i} + \epsilon_{i}

Dove:

  • y_{i} : è il valore per le vendite (variabile dipendente) all’osservazione i, ossia alla riga i
  • x_{i} : è il valore per una variabile indipendente (una di quelle che usiamo per predire) all’osservazione i
  • \beta_{0} : è un parametro, anche chiamato intercetta (vedremo tra poco il motivo)
  • \beta_{1} :  è un altro parametro, anche chiamato pendenza, che rappresenta il cambio di per ogni unità di differenza in x. Ossia se \beta_{1} = 2, e aumenta di 1, allora aumenterà di 2.
  • \epsilon_{i} : i residuali, la componente casuale, che riamane insperata dal modello.

Gli amanti della geometria noteranno che tale funzione non è altro che una retta (da qui i termini ‘intercetta’ e ‘pendenza’). E infatti, quello che cerchiamo di fare è proprio questo: cercare di creare una retta che si adatti il meglio possibile ai dati.

Ad esempio:

Vendite per livello stipendi

visualizza la relazione esistente tra le vendite e il livello degli stipendi. Come possiamo vedere, essa non è una retta perfetta: questo perché c’è ovviamente una componente aleatoria nella relazione. Costruendo una retta perfetta che si adattati al meglio a questi dati, andremo proprio a separare la relazione ‘vera’ dalla componete aleatoria; separeremo il segnale dal rumore di fondo, che è casuale. Ecco il risultato di questo procedimento:

Linea di regressione (in rosso)

Per costruire questa retta dobbiamo ‘aggiustare’ i due parametri \beta_{0}, \beta_{1}. In che modo? Minimizzando la distanza tra ogni punto e la retta!

Ossia usando il metodo dei least squaresi quadrati minimi; minimizzando questo tizio qui:

\sum\limits_{i=1}^{n}(y_{i} - (\beta_{0} + \beta{1}x_{i}))^{2}

Questo caso con una sola variabile indipendente può essere poi generalizzato a più variabili:

y_{i} = \beta_{0} + \beta_{1}x_{1i} + \beta_{2}x_{2i} + \cdots + \beta_{p}x_{pi} + \epsilon_{i}

La logica è sempre la stessa, anche se ora è impossibile visualizzare la relazione con un grafico (il massimo possibile sono 3 dimensioni. Per ovvie ragioni).

Naturalmente, come ogni elemento statistico, anche i parametri della regressione avranno una componente di variabilità, rappresentata dalla loro varianza e deviazione standard.

Inoltre, i modelli di regressione lineare semplice sono basati su quattro assunzioni:

  • Normalità degli errori \epsilon_{i}.
  • Deviazione standard degli errori \epsilon_{i} costante.
  • Linearità della relazione tra le variabili.
  • Indipendenza degli errori.

Data la vastità dell’argomento, delle assunzioni parleremo più nel dettaglio in un articolo successivo.

3. In R

Finalmente la pratica.

La regressione lineare semplice, in R, richiede ben pochi sforzi. La funzione da utilizzare è lm() nel pacchetto di {stats} (che è già preinstallato).

Per creare il modello basta dunque scrivere :

attach(freeny) # Per caricare il dataset
View(freeny) # Per visionare il dataset in forma matriciale
modello = lm(y~., data = freeny) # Per creare il modello

Il modello cosí creato avrà come variabile dipendente e tutte le altre (il ‘.’) come indipendenti.

Per visionare il contenuto, ovvero i parametri del modello, la loro variabilità e i relativi p-value, bisogna utilizzare la funzione summary():

summary(modello)

Ecco l’output:

Output del LM

Come possiamo vedere, la variabile log.quarterly.revenue, quando tutte le altre variabili sono presenti, non risulta avere una relazione statisticamente significativa con le vendite.

Iniziare come Data Scientist

Fino ad ora si è parlato in generale riguardo la Data Science e dintorni. Ma naturalmente il vero Data Scientist non vuole accontentarsi solo di teoria: anzi, la pratica è la forza trainante di questa materia. In questo articolo (abbastanza lungo) si parla proprio di questo: quali sono i passi da intraprendere per diventare un Data Scientist (e analizzare ‘sti famigerati Big Data)

Fase I: MaIoNonSoNienteDiStatistica!

Partendo dal principio (ossia, assumendo che tu, lettore, non sappia nulla sull’argomento), la prima cosa da fare per entrare in questo fantastico mondo è di rinfrescarsi (o imparare) la statistica di base. Quindi:

  • Campionamento
  • Rappresentazioni grafiche di dati
  • Probabilità base (numeri aleatori, almeno le distribuzioni Normale e Binomiale)
  • Indici di posizione (media, moda, mediana et cet.)
  • Indici di variabilità (varianza et cet.)
  • Intervalli di confidenza
  • Test di ipotesi (almeno i t-test e il chi-squared)
  • Regressione lineare semplice

Mi sarò sicuramente dimenticato qualcosa. In ogni caso questa lista rappresenta già un buon punto di partenza: consiglio di iniziare col vecchio metodo carta e penna; è molto meglio delle macchine per fissare i meccanismi matematici. Ovviamente, il modo più efficace sarebbe seguire un corso universitario di statistica base. Invece, per i pochi tra noi con abbastanza palle da procedere da soli, ci sono innumerevoli risorse, sia online che fisiche.

Come libro di testo consiglio Statistica di P. Newbold et al. Qui il libro su Amazon. Lo so, viene 40 palanche. Ne vale la pena comunque: è stato il mio primo libro di statistica ed è diventato un po’ la mia Bibbia parte I (aka Il Vecchio Testamento. Il nuovo è un altro libro di cui parlerò più avanti).

Vedo ora che in italiano non esistono siti con corsi di statistica gratuiti (magari ci faccio un pensierino di farne partire uno). Se cercate in inglese, ne troverete a camionate: uno tra i più importanti è KhanAcademy.

Fase II: La Programmazione

La statistica, come il resto della matematica, è già bella e pura di per sè. Per questo meriterebbe di essere studiata for its own sake. Ma i Data Scientist non si accontentato di contemplare la bellezza: vogliono anche averla. Per questo vengono in aiuto quegli individui oscuri che sono gli informatici: la programmazione (e le macchine) permettono alla statistica di entrare con il botto in mezzo ai dati e di generare risultati tangibili. Senza i computer, la statistica avrebbe un valore pratico molto basso (vi vorrei vedere a fare una regressione con un 1Gb di dati. A mano).

Imparare a programmare da zero senza aiuto di alcun tipo è fattibile: ci sono numerosi tutorial online, anche in italiano. Ma sarà un’impresa non semplice: il segreto per riuscirci è senza alcun dubbio la perseveranza. Imparare a programmare consiste, sostanzialmente, a smadonnare per ore ed ore cercando di trovare il bug. Che poi nel 70% dei casi, si rivela essere un errore di battitura. A quel punto smadonnerete ancora di più, rimpiangento le ore buttate al vento.

Il linguaggio con cui consiglio di inziare è R: totalmente gratuito, potete scaricarlo da qui per Windows, da qui per Mac o da qui per Linux. R è perfetto per l’analisi dei dati perchè è stato creato proprio con la statistica in mente. Essendo un linguaggio Open Source, sono disponibili una miriade di librerie che permettono al Data Scientist di eseguire azioni più disparate. Per esempio: se volessi calcolare l’indice V di Cramér non posso utilizzare il semplice R. Per farlo devo prima installare questa libreria (o pacchetto) che contiene una funzione (ossia un programma) atto al calcolo di quell’indice. R è un linguaggio interpretato e ad oggetti.

Dopo aver installato R, consiglio vivamente di scaricare ed installare questa GUI (Graphic User Interface): oltre ad essere gratis e bella esteticamente, aumenta notevolmente gli strumenti in mano all’analista. Di sequito, ecco come appare:

Screenshot di RStudio

Il linguaggio che si vede nei riquadri a sinistra è proprio R. La schermata è composta da 4 riquadri. Partendo da sinistra in alto e in senso orario:

  • Script: il programma che stiamo scrivendo
  • Workspace & Cronologia: indicano tutti gli oggetti esistenti nella sessione corrente e la cronologia dello script.
  • Files, Plot, Packages & Help: l’albero di directory della sessione, gli eventuali grafici creati, le librerie installate e la finestra di aiuto. Per installare un nuovo pacchetto, è necessario andare nella finestra Librerie, cliccare su Installa nuovo e seguire lo wizard.
  • Console: mostra il codice e i suoi  risultati quando viene eseguito.

Se non si volesse installare RStudio, bisognerà allora programmare usando la semplice GUI di R, che offre molti meno strumenti.

Una volta installati questi software, i.e. la GUI e la lingua vera e propria (o meglio il traduttore da R a linguaggio-macchina), siete pronti per partire. Nei prossimi articoli comincerò a portare degli esempi, complicati e non, di analisi dati in R [successivamente anche in Python] con tanto di codice al seguito.

Ma che diavolo è ‘sta Data Science?

Data Science non è una nuova scienza. È una nuova prospettiva.


E fai bene a chiedertelo usando quell tono, perchè Data Science è solo un termine nato dal nulla, per chiamare in modo più moderno delle idee e delle tecniche preesistenti.

Il suo scopo è quello di prendere dei dati, di qualsiasi tipo, e cercare di tirarne fuori delle informazioni utili per prendere decisioni, descrivere il processo che ha generato quei dati o più semplicemente, fare delle predizioni. Per esempio, cercare di capire che tempo farà domani è un classico problema di Data Science.

Che cosa vuol dire davvero? Data Science si riferisce ad una statistica che fa pesante uso di tecniche informatiche, quali programmazione, calcolo, database e via discorrendo. Essa non è dunque nulla di nuovo nelle sue tecniche, ma lo è per come tali tecniche si relazionano tra loro: Data Science non è una nuova scienza. È una nuova prospettiva.

Per gli amanti dei grafici tra di noi, possiamo dunque raffigurarla in questo modo:

data-science

La sua genesi si puó far risalire al termine Data Analysis che J. Tukey (uno dei padri della moderna statistica) usó nel suo articolo The Future of Data Analysis per riferirsi ad una statistica altamente focalizzata sull’analisi dei dati reali. Quindi più empirica che matematica. Tuttavia sarà solo nel 1994 che il termine Data Science verrà utilizzato per la prima volta: ‘Data science, classification, and related methods’, ossia il titolo di una conferenza organizzata dall’International Federation of Classification Societies, presso Kobe in Giappone (dove per altro allevano dei manzi da sogno). Da allora, la sua diffusione è diventata esponenziale.

Ora il caro lettore si starà domandando quali applicazioni possa avere questa nuova “scienza”. Ebbene, ogni attività, umana e non, genera dati. Come accennato precedentemente, se applichiamo le tecniche di Data Science a questi dati possiamo generare informazione. In altre parole, interpretare tali dati in maniera umanamente comprensibile e permettere di fare delle predizioni o descrizioni. Un esempio di predizione? Tutti i cookies dei siti che visitate non sono altro che files che registrano le tue interazioni con le pagine internet. Mamma Google (o chi per essa) userà poi questi dati per costruire un bel modello statistico (magari una bella macchina a supporto vettoriale) e offrirti della meravigliosa pubblicità personalizzata. Un esempio di descrizione? Ogni ditta deve cercare di capire la sua struttura dei costi: utilizzando una regressione più o meno complicata, è possibile comprendere con precisione matematica quali fattori influenzano le spese di questa compagnia ed in che modo ciò avviene. Altri esempi di Data Science all’opera possono essere: valutazione dell’impatto ambientale di una fattoria eolica marina, capire se una transazione bancaria è illegale oppure no, predirre i prezzi delle azioni nel nostro portafoglio, permettere al computer di riconoscere automaticamente gli oggetti in un gruppo di immagini, costruire automobili a guida automatica oppure identificare ed aiutare in anticipo potenziali criminali prima che commettano il crimine.

Essenzialmente, ogni processo che genera dati può essere modellato con tecniche di Data Science: la fantasia è davvero l’ultima frontiera.

Che strumenti deve dunque saper usare il Data Scientist? Indubbiamente deve essere molto (e intendo MOLTO) esperto in statistica, che compone la parte teorica del campo. Dalla parte pratica invece sono necessarie tante (e intendo TANTE) ore di programmazione in un linguaggio con un buoni pacchetti statistici: R è la prima scelta, Python la seconda. Una volta padroneggiati questi strumenti si entra nel puro cosmo; ogni Data Scientist puó perfezionarsi come preferisce: imparare un linguaggio SQL per maneggiare databases, costruire API per lavorare nel dipartimento di Advertising di Mamma Google o disegnare accattivanti visualizzazioni di dati usando Processing.js.

Ultimamente, sono inoltre nati nuovi termini come Data Mining o Machine Learning; in essenza, essi si riferiscono tuttavia a sottoinsiemi tecnici della Data Science: (per il principiante questa differenza non vorrà dire nulla) Machine Learning indica, ad esempio, un gruppo di modelli (principalmente non parametrici) che costituiscono una sorta di ponte con il campo dell’Intelligenza Artificiale (AI); le reti neurali ne sono un esempio.


Data Science, in sintesi, non rappresenta un nuovo filone di ricerca o una nuova ‘scienza’: essa è semplicemente una nuova prospettiva su come utilizzare insieme tecniche scientifiche di campi differenti. Grazie a questo suo ampio bagalio di metodologie, le sue applicazioni sono svariate spaziando dal campo finanziario, all’agricoltura fino allo sport. Il suo focus tuttavia, è l’analisi di dati in forma matematica.

 

La genesi del nome:

Ci possono essere solo due gruppi di lettori che leggono questo blog:

  1. Quelli che capiscono il nome del blog.
  2. E quelli che non lo capiscono (ancora).

Se appartieni alla prima categoria, perderesti tempo a leggere questo articolo: vai! Sei libero di fare il gallo per la tua erudizione statistica (e naturalmente di leggere altri post di questo blog).

Se invece non sei riuscito a capirlo, beh, bisogna sempre cominciare da qualche parte. E se vuoi esplorare il magico mondo della Data Science, questo è il posto perfetto.

Specialmente usata per I GLM (Generalized Linear Models), la Devianza o Deviance, è una delle misure usate per descrivere quanto un modello statistico si adatta ai dati usati per costruirlo. Il suo principale ruolo è di presentare un valore oggettivo per comparare due modelli distinti. Il nome quindi, non è altro che un simpaticissimo gioco di parole nato dalla mente malata di uno statistico. Se continui a leggere finirai anche tu così un giorno. Ma ti assicuro che ne varrà la pena.

Per i più audaci, riferisco la definizione matematica all’articolo di Nelder e Wedderburn