Nella sezione precedente vi ho illustrato attraverso un intero set di derivazioni matematiche pensate per un modello di massima entropia di essenzialmente un problema giocattolo, il problema giocattolo è come possiamo modellare la distribuzione dei tempi di arrivo di taxi di New York sulla base di un piccolo insieme di dati, e questo è un problema bene potrebbe essere di interesse a te personalmente, ma non è certo di profondo interesse scientifico. In questa sezione successiva, cosa farò è presentarvi un ragionevole interessante problema scientifico e mostrare come può l'approccio della massima entropia illuminare alcune caratteristiche interessanti di quel sistema. Il sistema particolare che abbiamo in mente è quello che la gente tende a chiamare ecosistema open-source. È una grande comunità di persone dedite alla scrittura di codice in modo che sia aperto, accessibile e inspezionabile, e in generale prodotto non da un individuo, e non da un'azienda, con tutele del copyright e controllo sul codice, ma piuttosto da una comunità di persone che condividono e modificano codice reciproco. L'ecosistema open-source è qualcosa che domina una gran parte dei programmi eseguiti per noi oggi, incluso non solo Mac OS X, ma ovviamente Linux. È una grande storia di successo e noi vorremmo studiarlo scientificamente. Ho usato la parola ecosistema in modo attento in parte perché molto di quello che sto andando a dire ora è un insieme di strumenti e derivazioni che ho imparato da John Harte e persone che hanno lavorato con John Harte sull'approccio della massima entropia non ai sistemi sociali, ma ai sistemi biologici e in particolare ecosistemi. Il libro di John Harte "Maximum Entropy and Ecology "- te lo consiglio come una fonte di molte più informazioni su tipi di strumenti che sto per mostrare ora. Il mio obiettivo qui è davvero quello di mostrare che anche semplici argomenti basati su la massima entropia possono fornirne davvero profonda conoscenza scientifica. Quello che sto per prendere come mia fonte di dati, perché sto andando a studiare il mondo empirico ora, è tratto da Sourceforge. Sourceforge non è più il repository più popolare di software open-source - forse Github lo ha ora eclissato, ma per molto tempo, forse dal 1999, e troviamo dati fino al 2011 su questo, ha un enorme archivio di progetti che spaziano da diversi tipi di giochi per computer a editor di testo per affari e software matematici, parte del codice che ho usato nella mia ricerca è messo su Sourceforge. È un ottimo posto in cui studiare in particolare l'uso di linguaggi informatici. Quello che ho tracciato qui é la distribuzione dei linguaggi usati dalla comunità open-source e trovato su Sourceforge. Sull'asse delle "x" c'è il logaritmo del numero di progetti scritti in un particolare linguaggio. Puoi vedere quel log zero, quello è uno. Nel database ci sono circa dodici linguaggi che hanno solo circa un progetto. Questi linguaggi sono estremamente rari, in altre parole, nel movimento open-source. Al contrario, all'altra estremità di questa scala logaritmica qui a quattro, quindi, dieci alla quattro sono diecimila, vediamo che c'è un piccolo numero di linguaggi estremamente popolari, questi sono più o meno linguaggi comuni che troverai su Sourceforge hanno una popolarità fuori controllo, ok? E se sai qualcosa di programmazione non ti sorprenderà che queste sono principalmente linguaggi derivati da C, come C, C++, Java, ok? Da qualche parte nel mezzo tra questi uccelli estremamente rari e questi incredibilmente comuni, sai, perché questi sono comuni, come i batteri del movimento open-source, da qualche parte nel mezzo che hai un numero maggiore di linguaggi moderatamente popolari, ok? Quindi questa distribuzione dei linguaggi è quello che cercheremo di spiegare usando il metodo della massima entropia, ok? C'è un piccolo numero di linguaggi rari uno più grande di quelli moderatamente popolari e poi di nuovo un numero molto piccolo di linguaggi molto popolari, ok? Quindi ho tracciato questa come una distribuzione di probabilità, infatti, P(n) dove n qui è il numero di progetti nella comunità open-source che usano il tuo linguaggio, e questa è la probabilità che il tuo linguaggio abbia n progetti nella comunità open-source, quello che vorremmo fare è costruire un modello di massima entropia di questa distribuzione qui, ho rappresentato gli stessi dati in un modo leggermente diverso, questo è come le persone tendono a rappresentarlo, questo è una classifica di abbondanza, quello che gli ecologisti chiamano distribuzione di abbondanza di specie. Quindi il linguaggio di primo livello, il primo posto, qui, è il linguaggio con il maggior numero di progetti, e non sorprenderà i giovani che in realtà questo si é rivelato essere Java, ci sono 20 mila progetti scritti in Java, puoi vedere il secondo linguaggio C++, poi C, poi PHP e questo raro i linguaggi quaggiù hanno livelli molto più bassi, quindi numeri più alti significano ranghi più bassi, come al 3° posto, al 4° posto, quindi un 100° posto proprio qui al centesimo posto c'è un linguaggio molto sfortunato chiamato Turing, che ha solo - per quanto ne so - in archivio sono scritti solo due progetti Turing, e puoi vedere alcuni dei miei linguaggi preferiti come Ruby sono da qualche parte qui in questa zona di moderata popolarità. Quindi rappresentiamo quei dati, sono gli stessi dati, ora quello che ho appena tracciato qui è log abbondanza su questo asse ed qui il rango del linguaggio ma è lineare, al contrario di qui, dove vi ho mostrato il logaritmo, ok? Questo è un grafico log-log, questo è ora un grafico log-lineare, quindi questi sono i dati effettivi. Quindi, la prima cosa che proveremo è una distribuzione con massima entropia per l'abbondanza del linguaggio, in altre parole, per il probabilità di trovare un linguaggio con "n" progetti, e quello che faremo è vincoleremo solo una cosa, la popolarità media di un linguaggio, questo sarà il nostro unico vincolo per il problema della massima entropia, e sceglieremo la distribuzione di probabilità "p" di "n" che massimizza l'entropia "p log p" somma negativa e da zero a infinito di "p log p", dove massimizzare questa quantità soggetta a questo vincolo e ovviamente, sempre soggetto a vincolo di normalizzazione, che "p(n)" è uguale all'unità, ok? Quindi questo è il mio altro vincolo e, naturalmente, sappiamo come farlo fare già questo problema, conosciamo la forma funzionale, è esattamente lo stesso problema come quello che avete imparato a fare quando avete modellato il tempo di attesa per un taxi di New York, ok? Avete modellato quel problema esattamente allo stesso modo, quindi io vincolerò solo la media del tempo di attesa, qui stiamo solo andando a limitare la popolarità media di un linguaggio, popolarità significa il numero di progetti scritti in quel linguaggio che sono nell'archivio, quindi sappiamo cosa è la forma funzionale apparirà, sembra come qualcosa come "e" alla meno "lambda n", ok? tutto su "Z", e poi non resta che trovare lambda e Z, ok? Così che riproduciamo la giusta abbondanza che vediamo nei dati, quindi questa è la distribuzione di massima entropia, è anche, ovviamente, un modello esponenziale, ha una forma esponenziale, e se effettivamente trova lambda e Z che riproducono al meglio i dati, in altre parole, quello che meglio soddisfa questo vincolo, e sono altrimenti massima entropia, ecco cosa troviamo, ok? Questa banda rossa qui è il sigma 1 e 2 contorni per la distribuzione di abbondanza e tutto quello che voglio che vediate questo grafico è un adattamento incredibilmente cattivo di questo. La massima distribuzione dell'entropia con questo vincolo, non riproduce i dati, non è in grado di spiegare, la nostra modellazione, i dati in qualsiasi ragionevole modo, radicalmente sottostima questi linguaggi estremamente popolari, non è in grado, in altre parole, di riprodursi il fatto che ci siano linguaggi come C e Python, che sono estremamente popolari, predice fin troppo questo regime mesoscopico, predice i linguaggi moderatamente popolari, giusto, come fa anche sovrastima quelli davvero rari uccelli, quei linguaggi di rango veramente basso, con pochissimi esempi nell'archivio, quindi questo è giusto, questo è il fallimento della scienza.