Correggere gli effetti indesiderati tra Dataset con ComBat
Questo modulo interattivo vi guiderà alla scoperta di un problema comune ma critico nell'analisi dei dati medici: gli effetti batch. Impareremo a riconoscerli, a capire perché sono un problema e a correggerli usando un potente strumento statistico chiamato ComBat.
Alla fine di questa guida, sarai in grado di spiegare cos'è un effetto batch, visualizzarne l'impatto sui dati e comprendere come l'algoritmo ComBat possa essere utilizzato per armonizzare dataset, conoscendone i presupposti e i limiti.
Immaginiamo di voler misurare un biomarcatore nel sangue di due gruppi di pazienti: sani e malati. Raccogliamo i campioni in due ospedali diversi, o magari nello stesso ospedale ma in giorni diversi o con macchinari leggermente differenti. Ciascuno di questi "gruppi" di misurazione è chiamato batch.
L'effetto batch è una variazione sistematica nei dati che non dipende da fattori biologici (come la malattia), ma da fattori tecnici legati al batch di misurazione. Questo "rumore" può mascherare le differenze biologiche reali o, peggio, creare differenze artificiali che non esistono!
Analogia: È come pesarsi su due bilance diverse. Anche se il tuo peso è lo stesso, una bilancia potrebbe costantemente segnare 1 kg in più dell'altra. Se confronti il tuo peso con quello di un amico che usa la seconda bilancia, potreste trarre conclusioni sbagliate, non a causa di una reale differenza di peso, ma a causa della diversa taratura delle bilance (l'effetto batch!).
Il grafico sottostante mostra dati simulati di due gruppi di pazienti (A e B). In teoria, dovrebbero essere simili. Tuttavia, sono stati analizzati in due "batch" (laboratori) diversi. Vedete come appaiono artificialmente separati?
Stato: Dati originali con effetto batch
ComBat è un algoritmo progettato per risolvere questo problema. La sua logica è molto elegante:
Dopo aver cliccato il pulsante sopra, avrai visto come i due batch convergono verso una distribuzione più uniforme. ComBat ha "rimosso" la separazione artificiale, permettendo ai dati di concentrarsi sulla variabilità biologica reale!
ComBat è disponibile in diverse librerie. Ecco come applicarlo sia in R che in Python:
# Installa il pacchetto sva (se non già installato)
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("sva")
# Carica la libreria
library(sva)
# Esempio: 'data_matrix' è una matrice (features x samples)
# 'batch' è un vettore che indica il batch di ogni campione
# 'mod' è un modello che include le variabili biologiche
data_corrected <- ComBat(dat = data_matrix,
batch = batch,
mod = mod)
ComBat è stato originariamente sviluppato per dati di microarray e genomica, ma può essere applicato a qualsiasi tipo di dato numerico ad alta dimensionalità dove si sospettano effetti batch. È comunemente usato anche per dati di imaging medico (es. risonanze magnetiche), proteomics, metabolomics, etc.
È fondamentale che:
No, ComBat è un ottimo strumento, ma non è magico! Funziona meglio quando gli effetti batch sono lineari e quando i batch sono bilanciati. Se i batch sono fortemente confusi con le variabili biologiche di interesse (ad esempio, tutti i "sani" sono in un batch e tutti i "malati" in un altro), ComBat non può distinguere l'effetto batch dalla biologia e potrebbe rimuovere anche segnali biologici reali. È sempre importante ispezionare i dati prima e dopo la correzione.
⚠️ Attenzione
Johnson, W. E., Li, C., & Rabinovic, A. (2007). Adjusting batch effects in microarray expression data using empirical Bayes methods. Biostatistics, 8(1), 118-127.
Leggi l'articolo (DOI)Leek, J. T., Scharpf, R. B., Bravo, H. C., et al. (2010). Tackling the widespread and critical impact of batch effects in high-throughput data. Nature Reviews Genetics, 11(10), 733-739.
Leggi l'articolo (DOI)© 2025 Corso "Dati in Medicina". Materiale didattico interattivo.