Metodo
Fatti i conti da solo
La pagina divulgativa racconta i risultati; questa documenta come li abbiamo ottenuti, con tutto quello che serve per verificarli in autonomia: dataset, mapping voce per voce, fonti primarie, esclusioni dichiarate. Se trovi un errore, o arrivi a conclusioni diverse con scelte di mapping diverse, scrivici: è esattamente lo scopo di questa pagina.
Le due validazioni
La filiera di DSMS ha due anelli, validati separatamente con la stessa metodologia e lo stesso riferimento esterno (USDA FoodData Central):
| anello | cosa fa | esito vs USDA |
|---|---|---|
| pipeline dati | produce il catalogo dei piatti preparati (kcal/100g) | mediana +0,8% su 36 piatti confrontabili |
| motore dell'app | da alimenti e grammi al bilancio giornaliero e al trend | +2,1% sul cumulato di 16 giorni reali |
pipeline: ricetta → matching CREA → yield → kcal/100g mediana +0,8% vs USDA app: alimenti + grammi a occhio → giorno → trend cumulato +2,1% vs USDA utente: grammi ±20% → giorno ±8% → trend ±2% 96% dentro la banda dichiarata
Validazione del motore (16 giornate reali)
Dati di partenza
- backup standard dell'app (chiunque può esportare il proprio da Gestione dati → backup): 16 check-in consecutivi, 150 voci alimentari, 69 alimenti distinti, grammature inserite a occhio. Nessun dato costruito ad hoc;
- valori nutrizionali dell'app: tabelle CREA (Centro di ricerca alimenti e nutrizione).
Verifica 1 — stesso diario, database indipendente
Le stesse 150 voci, con gli stessi grammi, rivalutate con i database USDA: SR Legacy (2018-04) per gli alimenti semplici, FNDDS (2022-10) per i piatti compositi. Mapping CREA→USDA documentato voce per voce nel JSON scaricabile qui sotto; 68 alimenti su 69 mappati, copertura del 96,9% delle kcal. Unica esclusione (simmetrica, da entrambi i lati): "insalata mista", perché FNDDS non ha un'insalata condita generica e costruirne una a tavolino avrebbe introdotto un bias a nostro favore.
Esito: +2,1% sul cumulato; mediana giornaliera +4,5%; 15 giorni su 16 entro ±11%; un outlier a -27% (26/06) quasi interamente imputabile ai ravioli al vapore — CREA-PE dà 270 kcal/100g contro le 113 del dumpling al vapore FNDDS, una divergenza reale tra fonti sui piatti etnici che registriamo senza nasconderla.
Verifica 2 — Monte Carlo sull'errore di inserimento
20.000 iterazioni, seed fisso 20260706: ogni grammatura reale perturbata con errore moltiplicativo casuale (sd ±20%, media 1, nessun bias). Il bilancio simulato di ogni giornata è confrontato con il range plausibile che il motore dichiara per quella giornata. Esito: 96,3% delle simulazioni dentro il range (peggior giorno 78%); con errore ±35%, copertura 84,8%.
Semantica del motore
- le kcal sono calcolate sui grammi crudi (dati CREA);
- lo yield factor (resa di cottura) entra come denominatore per il peso del piatto finito, non moltiplica le kcal;
- le regole di correzione delle ambiguità (olio non registrato, condimenti impliciti, contesto pasto) sono esplicite e ognuna porta un
source_refal riferimento che la giustifica.
Validazione della pipeline dati (catalogo piatti)
Tre verifiche sul catalogo dei 63 piatti preparati e sui fattori di resa:
- A — yield factor vs laboratorio: ogni yield implica una densità del cotto (kcal_crudo / yield); CREA e USDA quella densità la misurano. Su 11 coppie crudo→cotto documentate, carni magre e pesce entro pochi punti percentuali; sulle carni grasse con pelle la sovrastima è consapevole e conservativa (parte del grasso cola via in cottura);
- B — 63 piatti vs piatti misurati USA: 40 piatti mappati su equivalenti FNDDS/SR (23 esclusi dichiarati: piatti solo-italiani senza equivalente onesto). Sui 36 confrontabili puliti: mediana +0,8%, |differenza| mediana 9,9%, 81% entro ±25%. I piatti fuori banda hanno tutti una causa radice identificata nella pipeline (in corso di correzione — la storia completa arriverà su questo sito a correzione avvenuta);
- C — Monte Carlo sulle dosi: ogni ingrediente perturbato del ±20%, ricalcolo con l'esatta semantica della pipeline: kcal totali della porzione ±12,9% mediano, ma kcal/100g ±6,3% — la densità è robusta per costruzione, perché numeratore e denominatore sbagliano insieme.
Dataset scaricabili
Tutto ciò che serve per rifare i conti, in JSON:
| file | contenuto |
|---|---|
| stats.json | validazione motore: statistiche complete per giorno e per scenario Monte Carlo |
| confronto_usda.json | mapping CREA→USDA voce per voce, con esclusioni e note di giudizio dichiarate |
| stats_grabber.json | validazione pipeline: risultati completi per piatto e per coppia crudo→cotto |
Fonti primarie
- CREA — Tabelle di composizione degli alimenti: alimentinutrizione.it;
- USDA FoodData Central — dataset pubblici SR Legacy (aprile 2018) e FNDDS (ottobre 2022), scaricabili da fdc.nal.usda.gov.
Limiti dichiarati
- un solo utente, 16 giornate: validazione di coerenza, non studio clinico;
- il mapping tra database (e tra cucine) comporta scelte di giudizio — sui tagli di carne, sui piatti compositi, sulle equivalenze piatto-piatto. Ogni scelta è documentata nei JSON: chi vuole può rifare i conti con scelte diverse;
- il Monte Carlo perturba i grammi, non la scelta dell'alimento: un bias sistematico di selezione non si compensa da solo (lo gestiscono le correzioni di ambiguità e la calibrazione — vedi autoaggiustamenti);
- la verifica sugli yield assume kcal conservate in cottura: vero per la bollitura, approssimato (in direzione conservativa) per gli arrosti grassi.
Come rifare i conti
- scarica i tre JSON qui sopra;
- scarica SR Legacy e FNDDS dal sito USDA;
- ricalcola le kcal di ogni voce di
confronto_usda.jsonusando il codice USDA indicato nel mapping e gli stessi grammi; - se una scelta di mapping non ti convince, sostituiscila con la tua e guarda quanto cambia il cumulato — è il test più interessante;
- confronta i tuoi risultati con
stats.jsone, se divergono, scrivici.
In preparazione: le versioni PDF impaginate e citabili di entrambi i report, con le fonti scientifiche complete.