2026-08-12 | Pinperepette

Vi ho chiesto una serie e mi avete costruito un dataset

Lunedì sera ho chiesto che serie guardare. Sono arrivati più di trecento commenti. Il giorno dopo ho chiesto libri e ne sono arrivati altri cento. Ho ricontato tutto da zero, riscritto gli script e messo giù le classifiche aggiornate. Poi ho scoperto una cosa che non c'entrava niente con la domanda di partenza.

Dati Serie TV Libri Script

Non guardo praticamente mai la TV. Ogni tanto però mollo tutto e mi immergo in una serie, e lunedì sera avevo voglia di farlo senza sapere da dove partire. Quindi ho fatto la cosa più semplice del mondo: ho chiesto su X.

Nel giro di poche ore erano più di trecento commenti. Non riuscivo nemmeno a leggerli tutti, figuriamoci a rispondere. A un certo punto ho scritto sotto al post che era diventato un DDoS, e non era del tutto una battuta: la coda di notifiche non scendeva mai.

Allora ho fatto quello che faccio sempre quando i dati mi arrivano addosso invece di andarmeli a cercare. Li ho contati. Sono usciti quattro grafici, e sono piaciuti abbastanza che il giorno dopo ho rifatto il giro con i libri, e poi altri quattro grafici.

Poi mi avete chiesto le classifiche aggiornate, perché nel frattempo altra gente aveva risposto. Ed è successa una cosa che mi ha dato fastidio: mi sono accorto che gli script del primo giro erano rimasti solo nella mia testa e in una cartella temporanea. Quindi ho rifatto tutto da capo, questa volta scritto bene, e sta tutto qui dentro. Dataset, script e risposte grezze stanno in scripts/mi-avete-costruito-un-dataset, quindi se una riga vi sembra sbagliata la vedete e la correggete.

323risposte sulle serie
raccolte il 12 agosto
210titoli diversi
per 486 consigli
114risposte sui libri
per 195 titoli
1voto solo, per più
della metà dei titoli

Primo problema: l'API non ti dà i tuoi stessi commenti

Sembra banale. Non lo è. X dice che sotto al post ci sono 373 risposte, e quando le chiedi te ne dà duecento. Alla fine, incrociando quattro interrogazioni diverse, sono arrivato a 323 risposte uniche su 373 dichiarate, l'87 per cento. Le altre cinquanta non c'è verso. Lo scrivo subito e in grande perché è esattamente il tipo di cosa che nessuno mette mai sotto ai grafici.

Il motivo è che l'endpoint è paginato e la paginazione si ferma: dieci pagine, venti risposte a pagina, duecento e buonanotte. E non sono nemmeno le prime duecento, sono quelle che decide l'ordinamento: nel mio caso partivano dalle 20:18 di lunedì, quindi le prime tre ore e mezza di conversazione, cioè il pezzo grosso, non c'erano proprio. La soluzione è brutta ma funziona: interroghi la stessa conversazione da più angolazioni (per data, per popolarità, per finestra temporale chiusa, per conversation_id invece che per thread) e fai l'unione degli id, perché ogni query pesca un sottoinsieme un po' diverso.

import json, glob

# ogni chiamata (x_replies_to, ricerche con sort/finestre diverse) finisce
# in un file dentro raw/. Qui si fa solo l'unione, deduplicata per id.
def unisci(cartella, conversazione):
    visti = {}
    for f in glob.glob(cartella + "/*.json"):
        d = json.load(open(f))
        for i in d.get("items", []):
            if i.get("conversation_id") == conversazione and i["id"] != conversazione:
                visti[i["id"]] = i          # stesso id = stessa risposta
    return sorted(visti.values(), key=lambda x: x["created_at"])

risposte = unisci("raw", "2086859435490656571")
print(len(risposte), "risposte,",
      len({r["author"] for r in risposte}), "profili distinti")
Piccola nota di onestà: i numeri di questo articolo non coincidono con quelli che avevo pubblicato su X lunedì. Là avevo Breaking Bad a 27 voti, qui a 17. Non ho cambiato idea sui conti: ho cambiato dataset. Quello di lunedì l'avevo tirato su a mano leggendo la conversazione dal browser, dove i commenti li vedo tutti. Questo è ricostruito via API dove non li vedo tutti, ma è riproducibile da chiunque abbia lo script. Ho preferito il secondo. Le posizioni in classifica cambiano pochissimo, i totali sì.

Secondo problema: questa parte non la automatizzi

Uno legge "Fringe prima di tutte" e capisce Fringe. Un regex no. Nelle 323 risposte c'era gente che scriveva Le Boureau per Le Bureau, Batlestar per Battlestar, Cernobyl con la C, Breaking Bed (due volte, da persone diverse). C'era chi rispondeva a un altro commento con "vero, quella è bellissima" senza ripetere il titolo, e quel voto è valido eccome. C'era chi consigliava una cosa e ne stroncava altre quattro nella stessa riga, e quelle quattro non sono voti.

E poi c'era il commento con un GIF e la scritta "una specie di Bud Spencer on steroids", che è Reacher. L'ho capito solo perché tre risposte più sotto qualcuno scriveva "vediamo la quarta stagione che esce domani".

Quindi il dataset è curato a mano, riga per riga, e ha una forma volutamente stupida: un dizionario di titoli con i metadati, e una lista piatta di coppie (persona, titolo). Una riga per ogni volta che una persona consiglia una cosa.

# dati.py — chiave: (titolo, anno, paese, categoria)
SERIE = {
    "breakingbad": ("Breaking Bad", 2008, "USA", "crime"),
    "mrrobot":     ("Mr. Robot", 2015, "USA", "scifi"),
    "fauda":       ("Fauda", 2015, "Israele", "spionaggio"),
    "rocco":       ("Rocco Schiavone", 2016, "Italia", "italiana"),
    # ... 210 in tutto
}

# (utente, chiave) — un voto per persona per titolo
RECS = [
    ("laserpez", "blackmirror"), ("laserpez", "mindhunter"),
    ("TheBuffaloBit", "breakingbad"), ("TheBuffaloBit", "mrrobot"),
    ("nippur6502", "fauda"),
    ("SoniaVigoson", "fauda"),      # risposta di conferma sotto a nippur6502
    # ... 486 in tutto
]

La regola che conta è una sola e la ripeto in fondo a ogni grafico: un voto per persona per titolo. Se uno scrive Breaking Bad tre volte in tre commenti diversi, resta un voto. Se una persona ha risposto con venticinque titoli (ed è successo), quei venticinque valgono uno a testa esattamente come il tizio che ne ha scritto uno solo. Altrimenti la classifica la scrivono i più logorroici e non i più d'accordo.

Fatto questo, contare è banale. Il cuore di tutte le classifiche che seguono sono queste tre righe:

import collections

voti = collections.Counter(k for _, k in dati.RECS)
chi   = collections.defaultdict(list)
for persona, k in dati.RECS:
    chi[k].append(persona)

classifica = sorted(voti, key=lambda k: (-voti[k], dati.SERIE[k][0].lower()))

Il resto sono seicento righe di matplotlib per farlo sembrare una cosa seria.

Tutto quello che mi avete consigliato

Partiamo dalla mappa completa. Duecentodieci titoli, in nove scaffali per genere, ordinati per voti dentro ogni scaffale. Il pallino a sinistra cresce con i voti, il numero compare solo da due in su.

La videoteca: tutti i 210 titoli di serie TV consigliati, divisi in nove scaffali per genere, con voti, paese e anno
Tutti i titoli usciti dalle 323 risposte. Colonna di sinistra il crime, che da solo fa 53 titoli. A destra di ogni riga il paese di produzione e l'anno della prima messa in onda della serie originale. Cinque titoli non hanno un anno accertato e restano senza. Fonte: la conversazione, ricontata il 12 agosto.
apri a piena risoluzione

Le due cose che saltano fuori subito. La prima: 140 titoli su 210 sono americani, il 67 per cento. Quindici sono italiani, e non è male, ma il resto del mondo esiste appena. La seconda: 114 titoli su 210 li ha detti una persona sola. Più della metà di questa lista è il gusto di un singolo, non un consiglio condiviso.

La classifica aggiornata

Ecco la parte che mi avete chiesto. Sopra ci sono solo i titoli da cinque voti in su, con i nomi di chi li ha scelti, perché quello è l'unico posto della conversazione dove ci siamo trovati d'accordo davvero e mi sembrava giusto firmarlo.

Classifica delle serie TV: Breaking Bad 17 voti, Black Mirror e Fringe 13, Person of Interest 11
A sinistra i diciotto titoli con almeno cinque voti, con il nome di ogni persona che li ha nominati. In alto a destra dove finiscono i voti per genere, sotto i trentasei titoli a quattro e tre voti, in fondo le liste più lunghe. Un quadrato per titolo, colorato per genere.
apri a piena risoluzione

Breaking Bad vince con 17 e non è nemmeno una gara: prende il 30 per cento in più del secondo. Poi Black Mirror e Fringe appaiati a 13, Person of Interest a 11, e un plotone a dieci con Better Call Saul, Mr. Robot e The Expanse.

Person of Interest a 11 è la vera sorpresa. Non è una serie di cui si parla ancora molto in giro, e almeno tre di voi hanno scritto qualche variante di "possibile che nessuno gli abbia detto Person of Interest", ognuno convinto di essere il primo. Eravate in undici.

Il dato che però conta di più sta nel sottotitolo di quel grafico: 96 titoli su 210 hanno preso almeno due voti. Gli altri 114 sono roba detta una volta sola. La classifica esiste solo nei primi venti posti, sotto è un elenco di gusti personali che non si incontrano mai.

"Anche roba vecchia va benissimo"

Nel post avevo scritto che andava bene anche roba vecchia. Ho voluto vedere se era vero, cioè se la roba vecchia mi arrivava davvero o se era solo una cortesia che vi avevo fatto.

Le annate: le serie consigliate disposte sull'anno di prima messa in onda, una corsia per genere, con istogramma per decennio
Ogni pallino è una serie sull'anno della prima messa in onda. Più grande, più persone l'hanno consigliata. L'asse è spezzato: il pezzo 1955-1995 sta in un quinto della larghezza, altrimenti sarebbe stato quasi tutto vuoto. Sotto, quanti consigli arrivano da ogni decennio di uscita.
apri a piena risoluzione

Prima però una nota da lettore pignolo: dei 486 consigli, 481 hanno una data utilizzabile, perché cinque titoli hanno un anno che non sono riuscito a verificare. I conti di questo paragrafo stanno su quei 481.

Detto questo: la roba vecchia esiste ma è una minoranza netta. Il decennio 2010 da solo vale il 52 per cento di tutti i consigli. Tutto quello che è uscito prima del 1990, che sono trentuno anni di televisione, vale 11 consigli su 481. Il primo pallino a sinistra è del 1959 e sono Ai confini della realtà, l'ultimo è Pluribus dell'anno scorso.

E dentro quel poco che sopravvive c'è un pattern preciso: prima del 1990 restano quasi solo la fantascienza e i polizieschi. Star Trek, Spazio 1999, Il prigioniero, Ai confini della realtà, X-Files, Miami Vice, Magnum. La commedia degli anni Settanta ha lasciato Happy Days e Hazzard e basta. Il resto è evaporato.

La parte che non mi aspettavo: come state insieme

Fin qui erano classifiche, cioè conteggi. Ma nei dati c'era una cosa più interessante che non avevo guardato: quando una persona risponde con quattro titoli in una riga, quei quattro li sta associando. Nella sua testa stanno sullo stesso scaffale.

Se conto quante persone diverse hanno nominato la stessa coppia, mi esce un grafo. E il grafo non lo disegno io: viene fuori da solo.

import collections, itertools

per_persona = collections.defaultdict(set)
for persona, k in dati.RECS:
    per_persona[persona].add(k)

coppie = collections.Counter()
for titoli in per_persona.values():
    for a, b in itertools.combinations(sorted(titoli), 2):
        coppie[(a, b)] += 1        # +1 per ogni persona che li nomina entrambi

# soglia: titoli con almeno 4 voti, coppie viste da almeno 2 persone
archi = [(a, b, n) for (a, b), n in coppie.items() if n >= 2
         and voti[a] >= 4 and voti[b] >= 4]

Ottocentoquarantasette coppie osservate in tutto, e trentasei sopra la soglia che ho scelto per disegnare: titoli con almeno quattro voti, coppie viste da almeno due persone. La soglia sui voti serve solo a non riempire il cerchio di puntini, e più avanti rifaccio il conto senza. Ho provato prima con un layout a molle, quello che si usa di solito per i grafi, e faceva schifo: le componenti scollegate scappavano agli angoli e il centro collassava in una palla illeggibile. Allora l'ho buttato e ho messo i titoli su un cerchio, raggruppati per genere, con le corde dentro.

Grafo circolare: 23 serie con almeno 4 voti disposte per genere, collegate dalle corde delle coppie consigliate insieme
Ventitré titoli con almeno quattro voti, collegati quando almeno due persone li hanno nominati tutti e due. I settori del cerchio sono i generi, cioè una classificazione mia. Le corde no, quelle le avete tirate voi. Spessore della corda proporzionale a quante persone la sostengono.
apri a piena risoluzione

Guardate quante corde tagliano il cerchio invece di restare dentro il proprio settore: 44 su 100. Solo che quel numero, da solo, non vale granché: dipende da come ho disegnato io i settori. Se accorpassi crime e spionaggio, che è una scelta difendibile, crollerebbe.

La misura che non dipende dai miei settori è l'assortatività, che è roba da analisi di reti: quanto un nodo tende a collegarsi con nodi che hanno la stessa etichetta. Vale 1 se i generi sono mondi separati, 0 se il genere non conta niente, e può anche andare sotto zero se i generi si attraggono. Qui vale 0,29. Per sapere se 0,29 è tanto o poco ho rimescolato le etichette di genere sui nodi tremila volte e rifatto il conto: viene −0,08 in media, e il valore vero non lo raggiunge quasi mai (p = 0,001).

Quindi il genere conta, non è rumore. Ma conta poco, e siamo molto più vicini allo zero che all'uno. Il crime e la fantascienza, che nella mia tabella sono due categorie separate, nelle vostre risposte sono ampiamente lo stesso pubblico. Breaking Bad si lega a Black Mirror, a Mr. Robot, a Dark, a Chernobyl. Il genere è un'etichetta comoda per chi fa i grafici, non è il modo in cui vi ricordate le serie.

E poi c'è la cosa che mi ha divertito di più. Il nodo con più legami è Breaking Bad, con dieci. Il secondo non è Better Call Saul, che è il suo spin off: è Mr. Robot, con sette. Mr. Robot fa da ponte tra le due metà del cerchio. Se dovessi indovinare da una sola risposta cos'altro guarda una persona, guarderei lì.

Restano fuori dodici titoli che hanno quattro voti o più e non hanno mai viaggiato in coppia con nessuno: Dr. House, Yellowstone, The Shield, Sons of Anarchy, Dexter, Lie to Me. Piacciono, ma a gente che non si somiglia fra sé.

I libri, e qui cambia tutto

Il giorno dopo ho rifatto la stessa domanda con i libri, perché il thread sulle serie era stato bello per un motivo che non c'entrava con le serie: ci si era avvicinati un po' attraverso i gusti di ciascuno.

Stesso metodo, stesso script, un dizionario e una lista piatta. Solo che i metadati sono diversi: titolo, autore, anno di prima edizione originale (non della traduzione italiana, che è un'altra cosa), tema, e se è narrativa o saggistica.

Classifica dei libri: Gödel Escher Bach 5 voti, poi tre libri a quattro voti
I diciotto libri con più di un voto, su 195 titoli totali. A destra gli autori più nominati, contati per numero di persone diverse (e contando anche chi è stato citato senza un titolo preciso, tipo "leggi tutto Lovecraft"), e le librerie più lunghe.
apri a piena risoluzione

Guardate i numeri della prima riga e teneteli a mente: il libro più votato prende cinque voti. Cinque. È Gödel, Escher, Bach, che è esattamente il libro che ti aspetti da questo pubblico, e uno di voi mi ha scritto che l'ha appena cominciato e che ottocento pagine sono dure da maneggiare. Sotto ci sono tre libri a quattro voti (Armi acciaio e malattie, I pilastri della terra, Il Maestro e Margherita) e poi si scende subito a due.

Su 195 titoli, 177 li ha nominati una persona sola. Il 91 per cento.

La biblioteca: tutti i 195 libri consigliati, divisi in nove scaffali tematici, con autore e anno di prima edizione
Tutti i 195 titoli, in nove scaffali. Nella seconda colonna, sotto la fantascienza, i sette libri da cui ero partito io, tenuti fuori classifica. Nella biblioteca c'è dentro roba che va dalla Divina Commedia a Stochastic Calculus for Finance, e non è una battuta.
apri a piena risoluzione
Timeline dei libri consigliati per anno di prima edizione, dal 1321 al 2026
Sette secoli su uno scaffale. L'asse è compresso fino al 1900, altrimenti il grafico sarebbe stato tutto schiacciato a destra. Sei titoli non hanno un anno accertato e sono fuori da questa vista.
apri a piena risoluzione

La cosa che mi ha colpito: sulle serie ci troviamo, sui libri no

Due domande quasi identiche, allo stesso pubblico, a un giorno di distanza. Prima di andare avanti conviene avere in testa quattro numeri, che fin qui sono sparsi tra il testo e le figure.

486 → 210serie: menzioni raccolte
e titoli diversi che ne escono
17voti al primo
in classifica: Breaking Bad
223 → 195libri: menzioni raccolte
e titoli diversi che ne escono
5voti al primo
in classifica: Gödel, Escher, Bach

Da un lato una classifica con una testa netta, dall'altro una lista in cui quasi ogni menzione è un titolo nuovo e il primo prende cinque voti. Sono proprio due cose di forma diversa.

Il problema è che i due campioni sono di dimensioni diverse: 486 menzioni per le serie, 223 per i libri. Confrontarli così sarebbe scorretto, perché più menzioni raccogli più titoli diversi trovi, per forza. Serve una misura che tenga conto della taglia.

Questa misura esiste da sessant'anni e viene dall'ecologia. Si chiama curva di rarefazione: se dal mio campione estraessi a caso solo k menzioni, quante specie diverse mi aspetterei di trovare? La formula di Hurlbert la calcola in chiuso, senza simulazioni.

import math

def rarefazione(conteggi, k):
    """Titoli diversi attesi dopo k menzioni estratte a caso, senza rimpiazzo.
       conteggi = lista dei voti per titolo. Hurlbert 1971."""
    N = sum(conteggi)
    lg = math.lgamma
    def logC(n, r):                       # log del binomiale, per non esplodere
        return -math.inf if r > n or r < 0 else lg(n+1) - lg(r+1) - lg(n-r+1)
    d = logC(N, k)
    # 1 meno la probabilità che un titolo NON esca in nessuna delle k estrazioni
    return sum(1 - math.exp(logC(N - n, k) - d) for n in conteggi)

Applicata ai due dataset alla stessa quota, 223 menzioni per entrambi, dice questo.

Confronto serie TV contro libri: curva di rarefazione e coda della classifica, con quattro indicatori a confronto
A sinistra la curva di rarefazione: titoli diversi attesi al crescere delle menzioni raccolte. A destra la coda della classifica in scala logaritmica, voti del titolo in n-esima posizione. Questa volta la coda delle serie non è stimata dai totali pubblicati, come nella prima versione di lunedì: è il dataset completo, titolo per titolo.
apri a piena risoluzione

A parità di campione i vostri libri producono il 48 per cento di titoli diversi in più delle vostre serie. Detta in un altro modo: sulle serie 43 menzioni su 100 portano un titolo che non aveva ancora detto nessuno, le altre 57 ripetono. Sui libri quella quota sale a 87 su 100.

Il grafico di destra è ancora più chiaro. La curva blu delle serie parte da 17 e scende come una scala; quella arancione dei libri parte da 5 ed è quasi piatta da subito. Sono due oggetti di forma diversa, non due misure diverse della stessa cosa.

Perché succede, secondo me. Le serie TV le guardiamo tutti insieme nello stesso momento, perché ce le mette davanti la stessa piattaforma nella stessa stagione: c'è un catalogo condiviso, quindi c'è una memoria condivisa. I libri no. Un libro lo trovi per conto tuo, in un momento a caso della tua vita, e quel momento non lo condivide nessun altro. La lista dei libri di una persona è molto più informativa su chi è quella persona di quanto lo sia la sua lista di serie, per il semplice motivo che è molto meno probabile che coincida con la mia.

Che poi è esattamente quello che speravo succedesse quando ho fatto la seconda domanda, solo che non pensavo si potesse misurare.

Duecentodieci titoli, ma quanti contano davvero?

C'è una cosa che ho ripetuto in tutto l'articolo senza dirvi che è la misura più fragile che esista: quanti titoli diversi sono usciti. Duecentodieci, centonovantacinque. Il problema è che quel numero non è una proprietà dei vostri gusti, è una proprietà della quantità di dati che ho raccolto. Se dalle serie ne sorteggio 223 come per i libri, i 210 titoli diventano 131. Non è cambiato niente nei gusti, ho solo guardato di meno.

Meglio girare la domanda: quanti titoli equiprobabili darebbero la stessa diversità che vedo? Se dieci titoli si dividessero i voti in parti uguali, la risposta sarebbe dieci. Se uno prendesse quasi tutto e gli altri nove le briciole, la risposta sarebbe poco più di uno. Questi si chiamano numeri di Hill e hanno un parametro q che decide quanto pesano i titoli rari: a q=0 contano tutti uguale (ed è il conteggio crudo), a q=1 ognuno pesa quanto la sua frequenza, a q=2 i titoli rari smettono quasi di contare.

def hill(c, q):
    """c = voti per titolo. Restituisce quanti titoli equiprobabili
       darebbero la stessa diversita' di c."""
    p = c / c.sum()
    if q == 1:                       # exp dell'entropia di Shannon
        return math.exp(-(p * np.log(p)).sum())
    return (p ** q).sum() ** (1 / (1 - q))

# q=0 -> quanti titoli esistono          (il conteggio crudo)
# q=1 -> exp(H), la "perplexity"
# q=2 -> 1/somma(p^2), cioe' l'inverso dell'indice di Herfindahl

Qui mi si è accesa una lampadina. La perplexity la conosco dai modelli linguistici, l'indice di Herfindahl dall'antitrust, e non avevo mai notato che sono la stessa formula: q=1 e q=2. Cambia solo quanto sei disposto a dare retta alla coda.

Profilo di diversità di Hill per serie e libri, e tabella di somiglianza fra le persone
A sinistra il profilo di diversità: sull'asse orizzontale il parametro q, in verticale quanti titoli equiprobabili darebbero la stessa diversità. Tutto a parità di campione, 223 menzioni per entrambi, sorteggiate 500 volte con seed fisso (per i libri sono tutte, quindi la banda è nulla). A destra quanto si somigliano fra loro le persone che hanno risposto.
apri a piena risoluzione

A q=2, cioè guardando solo i titoli che raccolgono massa vera, le serie valgono 81 titoli e i libri 160. Il doppio. E notate cosa succede alle due curve: quella dei libri parte da 195 e scende pigramente, perché non c'è quasi niente da smontare, tutti i titoli pesano uguale. Quella delle serie parte da 131 e crolla, perché sotto ai primi venti c'è aria.

Il Gini della classifica dice la stessa cosa in un altro modo: 0,32 per le serie contro 0,12 per i libri, sempre a parità di campione. La massa dei consigli sulle serie è concentrata, quella sui libri è spalmata.

E le persone?

Fin qui ho contato titoli. Ma la domanda vera è sulle persone: due di voi presi a caso hanno qualcosa in comune? Basta prendere ogni coppia di partecipanti e guardare se le loro liste si toccano.

Si chiama indice di Jaccard ed è la cosa meno sofisticata di tutto l'articolo: titoli in comune diviso titoli totali dei due. Sulle serie viene sopra zero nel 3,26 per cento delle coppie, sui libri nell'1,63. Sui libri è la metà, nonostante le liste siano più lunghe: 3,01 titoli a testa contro 2,11, cioè più occasioni di incontrarsi.

Solo che qui stavo per prendere una cantonata. Guardando la distribuzione mi sono trovato 77 coppie di persone con somiglianza 1, cioè liste identiche, e la tentazione era raccontarle come "una piccola comunità di gente con gusti sovrapponibili". Sono andato a vedere chi erano: 76 su 77 sono coppie di persone che hanno nominato un titolo solo, lo stesso. Due che passano di lì e scrivono "Breaking Bad" e basta. Non è affinità elettiva, è una lista di lunghezza uno.

E qui il numeratore e il denominatore giocano contro di me, perché il 61 per cento delle liste sulle serie ha un titolo solo, contro il 34 per cento sui libri. Le liste corte gonfiano Jaccard proprio dalla parte che mi conviene. Quindi ho rifatto il conto tenendo solo chi si è sbilanciato con almeno due titoli.

Distribuzione della somiglianza di Jaccard fra coppie di persone, e come cambia alzando la soglia di lunghezza minima della lista
A sinistra la distribuzione della somiglianza fra coppie di persone, calcolata solo su chi ha nominato almeno due titoli. Le coppie a somiglianza zero sono la stragrande maggioranza e resterebbero fuori scala, quindi non sono disegnate. A destra come cambia la quota di coppie che si incontrano al salire dell'asticella: sotto ogni punto quante persone restano da quel lato.
apri a piena risoluzione

Tolto l'artefatto, il divario non si sgonfia: raddoppia. Fra chi ha detto almeno due titoli si incontra il 10,6 per cento delle coppie sulle serie contro il 2,4 sui libri. Fra chi ne ha detti almeno tre, il 19,7 contro il 4,8: una coppia di spettatori su cinque, una coppia di lettori su venti. Più alzo l'asticella e più le due curve divergono, che è l'opposto di quello che farebbero se il divario fosse un effetto delle liste corte.

Sul pannello di destra i punti più a destra vanno presi per quello che sono: a sei titoli restano quattordici persone da un lato e tredici dall'altro, quindi quella parte di curva balla parecchio. È la ragione per cui la soglia che uso nel testo è due, non sei.

E poi c'è il numero che ha chiuso la questione. Sulle serie, le coppie di titoli nominate insieme da almeno due persone diverse sono 46, contando qualsiasi titolo. Nel grafo di prima ne vedete 36 perché lì tenevo solo i titoli da quattro voti in su: le altre dieci hanno dentro roba come Goliath o Altered Carbon, che di voti ne hanno due, e le avevo lasciate fuori per non riempire il cerchio di puntini.

Sui libri sono zero. Non poche: zero. E non è la soglia dei quattro voti a farmi lo scherzo, perché ho provato ad abbassarla fino a prendere qualsiasi libro, anche quelli nominati una volta sola, e resta zero. In 74 persone e 223 consigli non esiste una singola coppia di libri che due persone diverse abbiano nominato entrambi.

Il grafo dei gusti, sui libri, non è debole. Non esiste proprio.

Che è il punto dove il cerchio si chiude, e infatti smetto qui: sono partito contando titoli, poi ho guardato come si distribuivano, poi come si legavano fra loro, e alla fine come si legano le persone. Alla fine sono quattro modi diversi di arrivare alla stessa cosa. Da una domanda su X delle nove di sera.

Quello che il conto non dice

Metto in fila i limiti, perché sono tanti e sono reali.

Il campione non è rappresentativo di niente. Sono le persone che seguono me e che avevano voglia di rispondere quella sera: pesante di nerd, di gente che legge saggistica scientifica e che ha delle opinioni. Se una serie non è in classifica non vuol dire che sia brutta, vuol dire che non l'ha vista questo gruppo qui.

La categorizzazione in generi è mia e in diversi punti è arbitraria. Ho messo Chernobyl in "storia" e Silo in "fantascienza", ma potevo metterle tutte e due in "distopia" e sarebbe cambiato il grafico dei generi. Il grafo delle corde, guarda caso, è proprio il modo per accorgersene.

Le date sono la prima messa in onda della serie originale, non del reboot e non della versione italiana. Battlestar Galactica è al 2004 e non al 1978 perché quasi tutti parlavano del reboot, ma uno di voi intendeva l'originale e quel voto è finito nel posto sbagliato. Cinque titoli non hanno un anno che sono riuscito a verificare e restano fuori dalla timeline.

Sull'assortatività: 0,29 è calcolata su una rete di 23 nodi e 36 archi, che è piccola. Il test di permutazione dice che non è rumore, ma l'intervallo attorno a quel numero è largo e non lo prenderei alla seconda cifra.

Poi ci sono due analisi che ho fatto e ho buttato, e visto che le ho fatte tanto vale dire perché. La prima è il fit di una legge di potenza sulla coda, alla Zipf: viene un esponente di 2,04 per le serie e 3,72 per i libri, con un test di Kolmogorov-Smirnov che non rifiuta né l'uno né l'altro. Sembra un risultato, non lo è: sui libri il titolo più votato ne prende cinque, quindi sto stimando una legge di potenza su valori interi che vanno da 1 a 5. Con quel margine di manovra ci si adatta qualsiasi cosa, e i due esponenti non sono confrontabili in modo onesto.

La seconda è l'informazione mutua fra genere e titolo. Quella non l'ho buttata perché veniva male, l'ho buttata perché non misura niente: il titolo determina il genere, quindi l'incertezza sul genere una volta noto il titolo è zero per costruzione, e quella quantità è sempre e comunque uguale all'entropia del genere. L'ho riformulata come informazione fra persona e genere, che ha senso, ma con due titoli a testa in media ogni persona predice il proprio genere quasi perfettamente per puro caso: rimescolando i dati, l'85 per cento del valore resta lì. Il segnale c'è ma è piccolo e sepolto sotto il bias di un campione corto. Non ci costruisco sopra una frase.

E il pezzo più fragile resta la lettura a mano. Ho deciso io che "vero, quella è bellissima" sotto al commento di un altro vale come voto, e che "Fringe, Trono di Spade, Mr Robot, Lie to me cazzate" non vale come quattro voti ma come zero. Un altro avrebbe deciso diversamente e avrebbe ottenuto numeri leggermente diversi. Gli script li ho messi tutti, e il dataset è leggibile riga per riga: le 210 serie e i 195 libri stanno lì, con accanto chi li ha nominati. Se una riga vi sembra sbagliata, si vede e si corregge.

E quindi, cosa guardo?

Me lo avete chiesto in parecchi sotto al post dei grafici, e la risposta onesta è che ha deciso mia moglie. In casa comando io, naturalmente, tranne quando ci sono lei, mia figlia o il cane. Ha scelto Absentia, che in questa classifica non compare nemmeno, e dopo un quarto d'ora dormiva sul divano.

Comunque ho segnato Mr. Robot, perché a questo punto è diventata una questione di metodo: se è il nodo che tiene insieme il grafo, tanto vale partire da lì. E Person of Interest, perché undici persone che si convincono ognuna per conto suo di essere l'unica ad averla nominata sono un segnale statistico difficile da ignorare.

Tutto quello che ho usato per scrivere questo pezzo sta in scripts/mi-avete-costruito-un-dataset: i sette script dei grafici, i due elenchi completi di serie e libri con i voti, e anche le risposte grezze in JSON, così se non vi fidate di come ho contato potete ricontare voi.

Grazie davvero a tutti quelli che hanno risposto. Volevo una serie e mi avete dato 486 consigli di serie, altri 223 di libri, un grafo, e una cosa da misurare che non sapevo di voler misurare. Nel dubbio, continuate a rispondere alle domande stupide che faccio la sera.