Salta al contenuto
Note per Studenti Interventi e operatore do - criterio backdoor e aggiustamento

Interventi e operatore do - criterio backdoor e aggiustamento

In questa pagina 8

Argomento del corso da 9 CFU. Prerequisiti: Inferenza causale - modelli causali strutturali e scala della causalitàI dati e la distribuzione congiunta da soli non dicono quali variabili causano quali: lo mostrano il paradosso di Simpson (la medicina funziona in ogni sottogruppo ma sembra peggiorare la popolazione) e il fatto che reti bayesiane diverse (A→B e B→A) descrivono la stessa congiunta. Serve un modello causale: un modello causale strutturale (SCM) ha variabili esogene U, endogene V e funzioni $v_i=f_i(\text{genitori},u_i)$; il suo grafo è la rete causale, e una rete causale è una rete bayesiana in cui le frecce sono cause. Le tre strutture elementari decidono l'indipendenza: catena $A\to B\to C$ e fork $A\leftarrow B\to C$ si bloccano osservando B, il collider $A\to B\leftarrow C$ si blocca se B e i suoi discendenti NON sono osservati (osservarlo crea dipendenza, explaining away). d-separazione: X e Y sono separati da Z se ogni cammino è bloccato; allora $X\perp!!!\perp Y\mid Z$. La scala della causalità (Pearl): associazione $P(y\mid x)$, intervento $P(y\mid do(x))$, controfattuali. Argomento del corso da 9 CFU.Inferenza causale - modelli causali strutturali e scala della causalità → (SCM, d-separazione) e Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →. Segue Controfattuali e scoperta causaleUn controfattuale chiede «cosa sarebbe successo a questo individuo se X fosse stato x?»: $Y_x(u)$ è il valore di Y nel modello $M_x$ (equazione di X sostituita da X=x) con le esogene fissate al valore $u$ dell'individuo. Si calcola in tre passi: abduzione (aggiornare $P(U)$ con l'evidenza, nel caso deterministico ricavare $u$ dai dati), azione (sostituire l'equazione di X con la costante), predizione (calcolare Y in $M_x$). Differenza con gli interventi: $P(Y\mid do(x))\equiv P(Y_x)$ è a livello di popolazione, ma in generale $P(Y\mid do(x),z)\ne P(Y_x\mid z)$ perché nel secondo il condizionamento è prima dell'intervento. Nei modelli lineari gaussiani i coefficienti di regressione di ogni variabile sui suoi genitori sono i coefficienti strutturali, e l'effetto causale totale è la somma dei prodotti dei coefficienti lungo i cammini non backdoor. Scoperta causale (algoritmo PC): si parte dal grafo completo non orientato, si toglie ogni arco X−Y con $X\perp!!!\perp Y\mid Z$ a $|Z|$ crescente (test di Fisher), si orientano i collider (Z mai nell'insieme separatore), poi si propaga l'orientamento; catena e fork non sono distinguibili (stessa classe di equivalenza di Markov). Assunzioni: aciclicità, sufficienza, Markov, fedeltà. Argomento del corso da 9 CFU.Controfattuali e scoperta causale →.

1. Osservare non è intervenire

Un esempio: incidenti stradali. L'ubriachezza ZZ e la velocità XX sono cause di incidente YY; inoltre chi è ubriaco tende ad andare più forte (Z→XZ\to X).

Grafico interattivo: Incidenti: l'ubriachezza Z è causa comune di velocità X e incidenti Y; X → Y è l'effetto che si vuole misurare

Qual è la probabilità che andare forte da solo causi un incidente? P(y∣x)P(y\mid x) non la dà: tra i guidatori veloci ci sono molti ubriachi, quindi P(y∣x)P(y\mid x) include un'influenza spuria di ZZ. Serve la probabilità di YY se si fa XX, non solo se lo si osserva: P(y∣do(x))≠P(y∣x).P(y\mid do(x))\ne P(y\mid x).

Definizione (operatore do). do(X=x)do(X=x) indica che si forza XX al valore xx (per esempio con un esperimento), indipendentemente da ciò che XX avrebbe fatto spontaneamente. P(Y=y∣do(X=x))P(Y=y\mid do(X=x)) è la probabilità di yy nel mondo in cui XX è stato imposto.

Nei dati le due operazioni sono diverse:

  • condizionare YY a X=xX=x significa selezionare le righe in cui si osserva X=xX=x;
  • intervenire significa riscrivere l'intera colonna XX con il valore xx, e questo cambia la tabella.

Esempio (sprinkler, 10 righe). La tabella della slide ha 5 righe con irrigatore acceso, di cui 2 con erba bagnata: P(bagnata∣irrigatore acceso)=2/5=0.4P(\text{bagnata}\mid\text{irrigatore acceso})=2/5=0.4. Ma do(Sprinkler=vero)do(\text{Sprinkler}=\text{vero}) forza tutte le 10 righe ad avere l'irrigatore acceso, scenario molto diverso: in particolare non si guarda più se era nuvoloso, che di solito spegne l'irrigatore.

Con le tabelle dello sprinkler dei laboratori: P(g∣s)=0.911P(g\mid s)=0.911, mentre P(g∣do(s))=0.9225P(g\mid do(s))=0.9225 (calcolo al paragrafo 3).

2. La chirurgia del grafo

Definizione (intervento come chirurgia). L'intervento do(X=x)do(X=x) trasforma l'SCM MM in un modello MxM_x in cui la funzione di XX è sostituita dalla costante X=xX=x e tutte le frecce entranti in XX sono tolte. Le altre funzioni restano invariate. Si ha P(y∣do(x))=PMx(y∣x).P(y\mid do(x))=P_{M_x}(y\mid x).

Grafico interattivo: Chirurgia del grafo dello sprinkler: a sinistra il modello originale, a destra quello dopo do(S = vero): la freccia C → S è tolta

Ragione: se forzo XX, il valore di XX non dipende più dai suoi genitori (CC non influenza più SS) ma XX continua a influenzare i suoi figli (S→WS\to W resta).

Equivalente in termini di probabilità: la congiunta della rete è il prodotto delle tabelle P(v∣pa(v))P(v\mid\text{pa}(v)); dopo l'intervento si toglie il fattore di XX e si pone X=xX=x negli altri: P(c,r,w∣do(S=vero))=P(c) P(r∣c) P(w∣S=vero,r).P(c,r,w\mid do(S=\text{vero}))=P(c)\,P(r\mid c)\,P(w\mid S=\text{vero},r).

Tre regole pratiche (laboratorio 8) per capire se l'intervento su XX ha effetto su YY:

  1. XX può avere effetto su YY solo se esiste almeno un cammino orientato da XX a YY. Altrimenti, nel grafo dopo l'intervento (XX senza genitori) X⊥ ⁣ ⁣ ⁣⊥YX\perp\!\!\!\perp Y.
  2. Se tra XX e YY ci sono solo cammini orientati, P(y∣do(x))=P(y∣x)P(y\mid do(x))=P(y\mid x): il grafo dopo la chirurgia ha gli stessi cammini del grafo originale.
  3. Se esiste un cammino non completamente orientato e non bloccato, XX e YY hanno un antenato comune (confondente) e stimare P(y∣do(x))P(y\mid do(x)) con P(y∣x)P(y\mid x) dà una stima distorta.

Le probabilità condizionate tra due variabili non toccate dall'intervento non cambiano: nel modello a cinque variabili del laboratorio 8 (nuvoloso, pioggia, irrigatore, bagnato, scivoloso) P(scivoloso∣bagnato)P(\text{scivoloso}\mid\text{bagnato}) resta uguale dopo un intervento sulla pioggia, mentre P(scivoloso∣nuvoloso)P(\text{scivoloso}\mid\text{nuvoloso}) no (il cammino nuvoloso → pioggia → bagnato è stato tagliato).

3. Formula di aggiustamento

Si vuole calcolare P(y∣do(x))P(y\mid do(x)) a partire dalle probabilità osservazionali, cioè «togliere» il dodo. Nel modello degli incidenti (Z→XZ\to X, Z→YZ\to Y, X→YX\to Y), con valori x,y,zx,y,z:

P(y∣do(x))=Pm(y∣x)definizione di intervento=∑zPm(y∣x,z) Pm(z∣x)probabilitaˋ totale sui valori di Z=∑zPm(y∣x,z) Pm(z)X⊥ ⁣ ⁣ ⁣⊥Z in m (freccia Z→X tolta)=∑zP(y∣x,z) P(z)le due uguaglianze sotto\begin{aligned} P(y\mid do(x))&=P_m(y\mid x)&&\text{definizione di intervento}\\ &=\sum_zP_m(y\mid x,z)\,P_m(z\mid x)&&\text{probabilità totale sui valori di }Z\\ &=\sum_zP_m(y\mid x,z)\,P_m(z)&&X\perp\!\!\!\perp Z\text{ in }m\text{ (freccia }Z\to X\text{ tolta)}\\ &=\sum_zP(y\mid x,z)\,P(z)&&\text{le due uguaglianze sotto} \end{aligned}

L'ultimo passaggio usa due fatti: Pm(z)=P(z)P_m(z)=P(z) (la chirurgia non cambia la distribuzione di ZZ, che non ha frecce toccate) e Pm(y∣x,z)=P(y∣x,z)P_m(y\mid x,z)=P(y\mid x,z) (la funzione di YY è intatta, e dati xx e zz il valore di YY dipende solo da loro).

Formula di aggiustamento (regola dell'effetto causale). P(y∣do(x))=∑z∈ΛP(y∣x,z) P(z),P(y\mid do(x))=\sum_{z\in\Lambda}P(y\mid x,z)\,P(z), con Λ\Lambda l'insieme dei genitori di XX.

È la media dei valori P(y∣x,z)P(y\mid x,z) pesata con la frequenza di zz nella popolazione intera, e non con la frequenza di zz tra chi ha X=xX=x (la differenza è proprio il confondente: nei dati osservati P(z∣x)P(z\mid x) cambia con xx).

Esempio (sprinkler, laboratorio 7). P(g∣do(r))P(g\mid do(r)): l'unico genitore di RR è CC. P(g∣do(r))=P(g∣r,c)P(c)+P(g∣r,¬c)P(¬c).P(g\mid do(r))=P(g\mid r,c)P(c)+P(g\mid r,\neg c)P(\neg c). P(c)=0.5P(c)=0.5 è nella rete. P(G∣r,c)P(G\mid r,c) si ottiene con l'enumerazione (Reti bayesiane - semantica, indipendenze e inferenza esattaUna rete bayesiana è un grafo diretto aciclico (DAG) con una variabile per nodo e una tabella delle probabilità condizionate (CPT) $P(X_i\mid\text{Parents}(X_i))$ per nodo; rappresenta la congiunta come prodotto $P(x_1,\dots,x_n)=\prod_i P(x_i\mid\text{parents}(X_i))$, con molti meno numeri della tabella completa (rete dell'allarme: 10 contro 31). Tre strutture elementari: catena $X\to Y\to Z$ e fork $Y\leftarrow X\to Z$ (estremi indipendenti dato il centro), collider $X\to Z\leftarrow Y$ (indipendenti, ma dipendenti se si osserva $Z$ o un suo discendente). Modelli causali (genitori = cause) danno reti più piccole. Inferenza esatta per enumerazione: $\mathbf P(X\mid\mathbf e)=\alpha\sum_{\mathbf y}\mathbf P(X,\mathbf e,\mathbf y)$ calcolata come somma di prodotti, in profondità e da sinistra a destra; per l'allarme $\mathbf P(B\mid j,m)=\langle0{,}284;\ 0{,}716\rangle$. Molti prodotti si ripetono: l'eliminazione di variabili li salva come fattori e li riusa.Reti bayesiane - semantica, indipendenze e inferenza esatta →), sommando sulla variabile nascosta SS: P(G∣r,c)=α∑sP(c)P(r∣c)P(s∣c)P(G∣r,s)=α′[P(s∣c)P(G∣r,s)+P(¬s∣c)P(G∣r,¬s)]\mathbf P(G\mid r,c)=\alpha\sum_s P(c)P(r\mid c)P(s\mid c)\mathbf P(G\mid r,s)=\alpha'\big[P(s\mid c)\mathbf P(G\mid r,s)+P(\neg s\mid c)\mathbf P(G\mid r,\neg s)\big] (il prodotto P(c)P(r∣c)P(c)P(r\mid c) non dipende da ss e finisce nel fattore di normalizzazione α′\alpha'). Con le tabelle: P(G∣r,c)=0.1⟨0.95,0.05⟩+0.9⟨0.90,0.10⟩=⟨0.905,0.095⟩\mathbf P(G\mid r,c)=0.1\langle0.95,0.05\rangle+0.9\langle0.90,0.10\rangle=\langle0.905,0.095\rangle e P(G∣r,¬c)=0.5⟨0.95,0.05⟩+0.5⟨0.90,0.10⟩=⟨0.925,0.075⟩\mathbf P(G\mid r,\neg c)=0.5\langle0.95,0.05\rangle+0.5\langle0.90,0.10\rangle=\langle0.925,0.075\rangle. Quindi P(g∣do(r))=0.905⋅0.5+0.925⋅0.5=0.915.P(g\mid do(r))=0.905\cdot0.5+0.925\cdot0.5=\mathbf{0.915}. Si confronti con P(g∣r)=0.907P(g\mid r)=0.907 osservazionale. Il calcolo completo con il codice è in Esercizio - Effetto causale di pioggia e irrigatore sul prato bagnato (laboratorio 7), la versione con pyAgrum in Esercizio - Effetto causale della pioggia con pyAgrum (esempio sprinkler). Verificato anche simulando l'SCM dello sprinkler con un milione di campioni: 0.9150.915.

Effetto causale medio (ACE)

Definizione (ACE). Per un trattamento X∈{1,0}X\in\{1,0\} e un esito Y=1Y=1, ACE=P(Y=1∣do(X=1))−P(Y=1∣do(X=0)).ACE=P(Y=1\mid do(X=1))-P(Y=1\mid do(X=0)). ACE>0ACE>0: il trattamento ha effetto positivo; ACE<0ACE<0 negativo; ACE=0ACE=0 neutro.

Esempio (Simpson). Il grafo è quello degli incidenti con XX medicina, YY guarigione, ZZ sesso. P(Z=1)=(87+270)/700=0.51P(Z=1)=(87+270)/700=0.51 (uomini), 0.490.49 donne. P(Y=1∣do(X=1))=0.93⋅0.51+0.73⋅0.49=0.832,P(Y=1∣do(X=0))=0.87⋅0.51+0.69⋅0.49=0.7818,\begin{aligned}P(Y{=}1\mid do(X{=}1))&=0.93\cdot0.51+0.73\cdot0.49=0.832,\\ P(Y{=}1\mid do(X{=}0))&=0.87\cdot0.51+0.69\cdot0.49=0.7818,\end{aligned} ACE=0.0502>0ACE=0.0502>0: la medicina migliora la guarigione, in accordo con i sottogruppi e in contrasto con il dato aggregato 78%<83%78\%<83\%. Le slide usano percentuali arrotondate; con le frazioni esatte (81/8781/87, ecc.) si ottiene 0.8325−0.7789=0.05370.8325-0.7789=0.0537. Svolto in Esercizio - Paradosso di Simpson ed effetto causale della medicina (slide del corso) e, con pyAgrum e un secondo insieme di dati, in Esercizio - Paradosso di Simpson con pyAgrum (laboratorio 7).

Esempio (sprinkler). ACE dell'irrigatore su gg: P(g∣do(s))=0.9225P(g\mid do(s))=0.9225, P(g∣do(¬s))=0.46P(g\mid do(\neg s))=0.46, ACE=0.4625ACE=0.4625; per la pioggia 0.915−0.34=0.5750.915-0.34=0.575.

4. Confondenti non osservati: cammini backdoor

Il confondente ZZ non è sempre osservabile (il sesso dei pazienti, l'alcol dei guidatori): non si può aggiustare su ZZ e l'effetto causale resta confuso con la correlazione spuria. Ma altre variabili possono bloccare il cammino.

Definizione (cammino backdoor). Un cammino backdoor tra XX e YY è un qualunque cammino da XX a YY che inizia con una freccia entrante in XX (passa per i genitori di XX). Si blocca condizionando su una catena o un fork, oppure è già bloccato da un collider non condizionato (d-separazione: Inferenza causale - modelli causali strutturali e scala della causalitàI dati e la distribuzione congiunta da soli non dicono quali variabili causano quali: lo mostrano il paradosso di Simpson (la medicina funziona in ogni sottogruppo ma sembra peggiorare la popolazione) e il fatto che reti bayesiane diverse (A→B e B→A) descrivono la stessa congiunta. Serve un modello causale: un modello causale strutturale (SCM) ha variabili esogene U, endogene V e funzioni $v_i=f_i(\text{genitori},u_i)$; il suo grafo è la rete causale, e una rete causale è una rete bayesiana in cui le frecce sono cause. Le tre strutture elementari decidono l'indipendenza: catena $A\to B\to C$ e fork $A\leftarrow B\to C$ si bloccano osservando B, il collider $A\to B\leftarrow C$ si blocca se B e i suoi discendenti NON sono osservati (osservarlo crea dipendenza, explaining away). d-separazione: X e Y sono separati da Z se ogni cammino è bloccato; allora $X\perp!!!\perp Y\mid Z$. La scala della causalità (Pearl): associazione $P(y\mid x)$, intervento $P(y\mid do(x))$, controfattuali. Argomento del corso da 9 CFU.Inferenza causale - modelli causali strutturali e scala della causalità →).

Definizione (criterio backdoor). Un insieme SS di variabili soddisfa il criterio backdoor per (X,Y)(X,Y) se

  1. blocca ogni cammino backdoor tra XX e YY;
  2. non contiene alcun discendente di XX.

La seconda condizione impedisce di condizionare su conseguenze di XX (che assorbirebbero parte dell'effetto o aprirebbero nuovi cammini).

Grafico interattivo: Esempio backdoor: X → A → Y, X → Y, B → X, B → C ← D, D → Y. L'unico cammino backdoor è X ← B → C ← D → Y

Nel grafo della figura l'unico cammino backdoor è X←B→C←D→YX\leftarrow B\to C\leftarrow D\to Y. Insiemi validi: {}\{\} (il collider CC blocca già il cammino), {B}\{B\}, {D}\{D\}, {B,D}\{B,D\}, {B,C}\{B,C\}, {C,D}\{C,D\}, {B,C,D}\{B,C,D\}. Non validi: {C}\{C\} da solo (condizionare sul collider apre il cammino) e qualunque insieme con AA (discendente di XX). Svolto con il codice in Esercizio - Cammini backdoor e insiemi di aggiustamento validi (laboratorio 8).

Formula di aggiustamento con il criterio backdoor. Se SS soddisfa il criterio backdoor, P(y∣do(x))=∑sP(y∣x,s) P(s),P(y\mid do(x))=\sum_sP(y\mid x,s)\,P(s), con ss che varia su tutte le combinazioni di valori delle variabili di SS.

Generalizza la formula con i genitori (l'insieme Λ\Lambda la soddisfa sempre).

Esempi della lezione

Variabili booleane salvo dove detto; i confondenti non osservati sono indicati esplicitamente.

  1. Z→XZ\to X, Z→W→YZ\to W\to Y, X→YX\to Y; ZZ non osservato. Un cammino backdoor X←Z→W→YX\leftarrow Z\to W\to Y; insiemi validi {Z},{W},{Z,W}\{Z\},\{W\},\{Z,W\}. Se si osserva solo WW: P(y∣do(x))=P(y∣x,w)P(w)+P(y∣x,¬w)P(¬w).P(y\mid do(x))=P(y\mid x,w)P(w)+P(y\mid x,\neg w)P(\neg w).
  2. Z→XZ\to X, Z→W←YZ\to W\leftarrow Y, X→YX\to Y (collider in WW). Cammino X←Z→W←YX\leftarrow Z\to W\leftarrow Y; validi {}\{\} e {Z}\{Z\} ({W}\{W\} no: apre il collider ed è un discendente di XX tramite X→Y→WX\to Y\to W). Con {}\{\}: P(y∣do(x))=P(y∣x)P(y\mid do(x))=P(y\mid x), perché togliere la freccia Z→XZ\to X non influenza YY.
  3. A→XA\to X, A→B→YA\to B\to Y, C→XC\to X, C→YC\to Y, X→YX\to Y; CC a tre valori. Backdoor: X←A→B→YX\leftarrow A\to B\to Y e X←C→YX\leftarrow C\to Y. Validi: {A,C},{B,C},{A,B,C}\{A,C\},\{B,C\},\{A,B,C\}. Se si osserva {A,C}\{A,C\}: P(y∣do(x))=∑i∈A∑j∈CP(y∣x,i,j)P(i,j)P(y\mid do(x))=\sum_{i\in A}\sum_{j\in C}P(y\mid x,i,j)P(i,j) (sei termini: a,¬aa,\neg a per c1,c2,c3c_1,c_2,c_3).
  4. A→XA\to X, A→BA\to B, B→XB\to X, B→YB\to Y, C→BC\to B, C→YC\to Y, X→Z→YX\to Z\to Y; AA non osservato. Quattro cammini backdoor: X←A→B→YX\leftarrow A\to B\to Y, X←A→B←C→YX\leftarrow A\to B\leftarrow C\to Y, X←B→YX\leftarrow B\to Y, X←B←C→YX\leftarrow B\leftarrow C\to Y. Validi: {A,B},{B,C},{A,B,C}\{A,B\},\{B,C\},\{A,B,C\}; con AA non osservato resta {B,C}\{B,C\} e P(y∣do(x))=∑i∈B∑j∈CP(y∣x,i,j)P(i,j)P(y\mid do(x))=\sum_{i\in B}\sum_{j\in C}P(y\mid x,i,j)P(i,j) (quattro termini). Nota che {B}\{B\} da solo non basta: condizionare sul collider BB nel cammino X←A→B←C→YX\leftarrow A\to B\leftarrow C\to Y lo apre, e serve CC (o AA) per richiuderlo.

Tutti gli insiemi elencati sono stati verificati con una piccola funzione che enumera i cammini e applica il criterio (lo stesso controllo dell'esercizio del laboratorio 8). L'esempio 1 e l'esempio 2, con numeri e simulazione, sono in Esercizio - Aggiustamento backdoor con un confondente non osservato e con un collider (slide del corso).

Verifica del modello. Se più insiemi bloccano i cammini backdoor (per esempio {Z}\{Z\} e {W}\{W\} nell'esempio 1), la formula deve dare lo stesso P(y∣do(x))P(y\mid do(x)) con entrambi. Se con i dati reali i due risultati sono diversi, il modello causale è sbagliato: non è coerente con i dati. È un test per scartare ipotesi sul mondo.

5. Front-door

Se nessun confondente è osservabile ma tra XX e YY c'è una variabile intermedia, si può comunque stimare l'effetto. Esempio: fumo XX → catrame nei polmoni ZZ → cancro YY, con il «gene del fumo» UU non osservato causa comune di XX e YY.

Grafico interattivo: Front-door: il gene U (non osservato, tratteggiato) è causa comune di X (fumo) e Y (cancro); Z (catrame) è osservato

Si applica il criterio backdoor due volte e si combina:

  • X→ZX\to Z: nessun cammino backdoor aperto (l'unico, X←U→Y←ZX\leftarrow U\to Y\leftarrow Z, ha il collider YY), quindi P(z∣do(x))=P(z∣x)P(z\mid do(x))=P(z\mid x);
  • Z→YZ\to Y: il cammino backdoor Z←X←U→YZ\leftarrow X\leftarrow U\to Y è bloccato da XX, quindi P(y∣do(z))=∑x′P(y∣z,x′)P(x′)P(y\mid do(z))=\sum_{x'}P(y\mid z,x')P(x');
  • P(y∣do(x))=∑zP(y∣do(z))P(z∣do(x))P(y\mid do(x))=\sum_zP(y\mid do(z))P(z\mid do(x)) (probabilità totale su ZZ).

Formula front-door. P(y∣do(x))=∑zP(z∣x)∑x′P(y∣z,x′) P(x′).P(y\mid do(x))=\sum_zP(z\mid x)\sum_{x'}P(y\mid z,x')\,P(x'). Criterio: SS soddisfa il front-door per (X,Y)(X,Y) se (1) blocca ogni cammino diretto da XX a YY; (2) non ci sono cammini backdoor non bloccati da XX a SS; (3) tutti i cammini backdoor da SS a YY sono bloccati da XX. L'espressione non dipende da UU.

Esempi (slide): X→Z→YX\to Z\to Y con UU: {Z}\{Z\}; X→A→B→YX\to A\to B\to Y: {A},{B},{A,B}\{A\},\{B\},\{A,B\}; X→A→YX\to A\to Y e X→B→YX\to B\to Y: serve {A,B}\{A,B\} (un solo mediatore lascia aperto l'altro cammino diretto); se UU è causa anche di ZZ: impossibile, perché il cammino backdoor da ZZ a YY (Z←U→YZ\leftarrow U\to Y) non è bloccato da XX. Con i dati del laboratorio 8 (400 fumatori, 400 non fumatori) si ottiene P(y∣do(x))=0.5475P(y\mid do(x))=0.5475: Esercizio - Aggiustamento front-door ed effetto del fumo sul cancro (laboratorio 8).

6. Mediazione: effetto diretto e indiretto

Spesso si vuole separare l'effetto diretto (X→YX\to Y) da quello indiretto o mediato (X→Z→YX\to Z\to Y). Esempio: XX genere del candidato, ZZ qualifiche, YY assunzione. Per isolare l'effetto diretto di XX si potrebbe condizionare su ZZ: P(y∣do(x),z)−P(y∣do(x∗),z)P(y\mid do(x),z)-P(y\mid do(x^*),z). Ma non sempre si può: se esiste anche WW = reddito con W→ZW\to Z e W→YW\to Y, condizionare su ZZ (collider in X→Z←WX\to Z\leftarrow W) crea una dipendenza spuria tra XX e WW, quindi tra XX e YY.

Grafico interattivo: Mediazione: effetto diretto X → Y ed effetto mediato X → Z → Y; W è causa di Z e di Y

Si interviene invece anche sul mediatore e si definisce l'effetto diretto controllato.

Definizione (CDE). Per un valore fissato zz: CDE(z)=P(y∣do(x),do(z))−P(y∣do(x∗),do(z)).CDE(z)=P(y\mid do(x),do(z))-P(y\mid do(x^*),do(z)). L'effetto diretto medio (ADE) si ottiene mediando i CDECDE sui valori di ZZ.

Si risolve il doppio dodo nel grafo con WW: P(y∣do(x),do(z))=P(y∣x,do(z))=∑wP(y∣x,z,w)P(w).P(y\mid do(x),do(z))=P(y\mid x,do(z))=\sum_wP(y\mid x,z,w)P(w). Primo passaggio: do(x)→xdo(x)\to x perché non ci sono cammini backdoor da XX a YY. Secondo: per do(z)do(z) ci sono due cammini backdoor da ZZ a YY, uno chiuso dal condizionamento X=xX=x (Z←X→YZ\leftarrow X\to Y), l'altro (Z←W→YZ\leftarrow W\to Y) da chiudere aggiustando su WW. Dunque CDE(z)=∑w[P(y∣x,z,w)−P(y∣x∗,z,w)]P(w).CDE(z)=\sum_w\big[P(y\mid x,z,w)-P(y\mid x^*,z,w)\big]P(w).

Condizione generale. Il CDECDE di XX su YY mediato da ZZ si calcola se (1) esiste un insieme S1S_1 che blocca tutti i cammini backdoor da ZZ a YY; (2) esiste un insieme S2S_2 che blocca tutti i cammini backdoor da XX a YY dopo aver tolto le frecce entranti in ZZ. Con S={S1,S2}S=\{S_1,S_2\}: P(y∣do(x),do(z))=∑sP(y∣x,z,s)P(s)P(y\mid do(x),do(z))=\sum_sP(y\mid x,z,s)P(s).

Verifica numerica (SCM booleano con tabelle inventate da me, P(x)=0.5P(x)=0.5, P(w)=0.4P(w)=0.4): la formula dà CDE(z=0)=0.130CDE(z{=}0)=0.130 e CDE(z=1)=0.260CDE(z{=}1)=0.260, esattamente come il calcolo dal modello strutturale. Condizionare su ZZ senza aggiustare su WW darebbe 0.1130.113 e 0.2000.200: errore dovuto al collider.

7. Librerie

Nei laboratori si usano due librerie; qui i numeri dei laboratori sono ricalcolati con numpy.

python
# pyAgrum: modello bayesiano + CausalModel, calcolo di P(Y | do(X))
import pyagrum as gum, pyagrum.causal as csl, pyagrum.causal.notebook as cslnb
m = gum.fastBN("Cloudy{T|F}->Rain{T|F}->GrassWet{T|F}<-Sprinkler{T|F}<-Cloudy")
d = csl.CausalModel(m)
cslnb.getCausalImpact(d, "GrassWet", doing="Rain", values={"Rain": "T"})   # P(GrassWet | do(Rain=T))
python
# CausalGraphicalModels: solo la struttura del grafo (nessuna probabilità)
from causalgraphicalmodels import CausalGraphicalModel
g = CausalGraphicalModel(nodes=["X", "Y", "Z", "W"],
                         edges=[("X", "Y"), ("Z", "X"), ("Z", "W"), ("W", "Y")])
g.get_all_backdoor_paths("X", "Y")                 # [['X','Z','W','Y']]
g.get_all_backdoor_adjustment_sets("X", "Y")       # insiemi validi
g.do("X").draw()                                   # grafo dopo la chirurgia
# latent_edges=[("X","Y")] aggiunge una causa comune non osservata
# g.get_all_frontdoor_adjustment_sets("X", "Y")

pyAgrum calcola P(y∣do(x))P(y\mid do(x)) trovando da solo un insieme di aggiustamento (lo scrive nella spiegazione: backdoor ['Gender'] found); CausalGraphicalModels non ha probabilità e dice solo quali insiemi sono validi, come nei calcoli a mano sopra.

Domande d'esame

  1. P(y∣x)P(y\mid x) e P(y∣do(x))P(y\mid do(x)) sono uguali quando? Quando non ci sono cammini backdoor non bloccati (nessun confondente), per esempio quando tra XX e YY ci sono solo cammini orientati.
  2. Calcola P(y∣do(x))P(y\mid do(x)) per Z→XZ\to X, Z→YZ\to Y, X→YX\to Y con P(z)=0.4P(z)=0.4, P(y∣x,z)=0.9P(y\mid x,z)=0.9, P(y∣x,¬z)=0.5P(y\mid x,\neg z)=0.5. 0.9⋅0.4+0.5⋅0.6=0.660.9\cdot0.4+0.5\cdot0.6=0.66 (si pesa con P(z)P(z), non con P(z∣x)P(z\mid x)).
  3. Nel grafo X→YX\to Y, B→XB\to X, B→C←DB\to C\leftarrow D, D→YD\to Y, {C}\{C\} è un insieme backdoor valido? No: CC è un collider e condizionarci apre il cammino X←B→C←D→YX\leftarrow B\to C\leftarrow D\to Y.
  4. Quando si usa il front-door? Quando il confondente non è osservato ma c'è un mediatore ZZ che intercetta tutti i cammini diretti X→YX\to Y, senza backdoor X→ZX\to Z e con i backdoor Z→YZ\to Y bloccati da XX: P(y∣do(x))=∑zP(z∣x)∑x′P(y∣z,x′)P(x′)P(y\mid do(x))=\sum_zP(z\mid x)\sum_{x'}P(y\mid z,x')P(x').

Versione ripasso

Argomento del corso da 9 CFU; prerequisiti: Inferenza causale - modelli causali strutturali e scala della causalitàI dati e la distribuzione congiunta da soli non dicono quali variabili causano quali: lo mostrano il paradosso di Simpson (la medicina funziona in ogni sottogruppo ma sembra peggiorare la popolazione) e il fatto che reti bayesiane diverse (A→B e B→A) descrivono la stessa congiunta. Serve un modello causale: un modello causale strutturale (SCM) ha variabili esogene U, endogene V e funzioni $v_i=f_i(\text{genitori},u_i)$; il suo grafo è la rete causale, e una rete causale è una rete bayesiana in cui le frecce sono cause. Le tre strutture elementari decidono l'indipendenza: catena $A\to B\to C$ e fork $A\leftarrow B\to C$ si bloccano osservando B, il collider $A\to B\leftarrow C$ si blocca se B e i suoi discendenti NON sono osservati (osservarlo crea dipendenza, explaining away). d-separazione: X e Y sono separati da Z se ogni cammino è bloccato; allora $X\perp!!!\perp Y\mid Z$. La scala della causalità (Pearl): associazione $P(y\mid x)$, intervento $P(y\mid do(x))$, controfattuali. Argomento del corso da 9 CFU.Inferenza causale - modelli causali strutturali e scala della causalità → e Formula delle probabilità totali e formula di BayesSe (A_i) è una partizione di Ω, P(B) = Σ P(B ∣ A_i) P(A_i) (probabilità totali); la formula di Bayes inverte il condizionamento: P(A_k ∣ B) = P(B ∣ A_k) P(A_k) / P(B).Formula delle probabilità totali e formula di Bayes →.

  • dodo forza XX. P(y∣do(x))≠P(y∣x)P(y\mid do(x))\ne P(y\mid x) se c'è un confondente: condizionare = selezionare le righe con X=xX=x; intervenire = riscrivere l'intera colonna XX con xx. Sprinkler: P(g∣s)=2/5=0.4P(g\mid s)=2/5=0.4 sulle 10 righe della slide; do(S=vero)do(S=\text{vero}) forza tutte le righe.

  • Chirurgia. MxM_x: l'equazione di XX diventa la costante xx e le frecce entranti in XX sono tolte (quelle uscenti restano). Nella congiunta si toglie il fattore P(x∣pa(x))P(x\mid\text{pa}(x)): P(c,r,w∣do(S=1))=P(c)P(r∣c)P(w∣S=1,r)P(c,r,w\mid do(S{=}1))=P(c)P(r\mid c)P(w\mid S{=}1,r). Regole: nessun cammino orientato da XX a YY ⇒\Rightarrow nessun effetto; solo cammini orientati ⇒\Rightarrow P(y∣do(x))=P(y∣x)P(y\mid do(x))=P(y\mid x); cammino non orientato aperto ⇒\Rightarrow confondente e stima distorta.

  • Aggiustamento (genitori Λ\Lambda di XX). Passi:

    1. P(y∣do(x))=Pm(y∣x)P(y\mid do(x))=P_m(y\mid x) (definizione);
    2. =∑zPm(y∣x,z)Pm(z∣x)=\sum_zP_m(y\mid x,z)P_m(z\mid x) (probabilità totale);
    3. =∑zPm(y∣x,z)Pm(z)=\sum_zP_m(y\mid x,z)P_m(z) (in mm la freccia Z→XZ\to X non c'è, X⊥ ⁣ ⁣ ⁣⊥ZX\perp\!\!\!\perp Z);
    4. =∑zP(y∣x,z)P(z)=\sum_zP(y\mid x,z)P(z), perché Pm(z)=P(z)P_m(z)=P(z) e Pm(y∣x,z)=P(y∣x,z)P_m(y\mid x,z)=P(y\mid x,z).

    Si pesa con P(z)P(z) della popolazione, non con P(z∣x)P(z\mid x).

  • Sprinkler P(g∣do(r))=P(g∣r,c)P(c)+P(g∣r,¬c)P(¬c)P(g\mid do(r))=P(g\mid r,c)P(c)+P(g\mid r,\neg c)P(\neg c). P(G∣r,c)=α′[P(s∣c)P(G∣r,s)+P(¬s∣c)P(G∣r,¬s)]=0.1⟨0.95,0.05⟩+0.9⟨0.90,0.10⟩=⟨0.905,0.095⟩\mathbf P(G\mid r,c)=\alpha'[P(s\mid c)\mathbf P(G\mid r,s)+P(\neg s\mid c)\mathbf P(G\mid r,\neg s)]=0.1\langle0.95,0.05\rangle+0.9\langle0.90,0.10\rangle=\langle0.905,0.095\rangle; per ¬c\neg c: 0.5⟨0.95,0.05⟩+0.5⟨0.90,0.10⟩=⟨0.925,0.075⟩0.5\langle0.95,0.05\rangle+0.5\langle0.90,0.10\rangle=\langle0.925,0.075\rangle. Risultato 0.905⋅0.5+0.925⋅0.5=0.9150.905\cdot0.5+0.925\cdot0.5=0.915 (osservazionale P(g∣r)=0.907P(g\mid r)=0.907).

  • ACE =P(y∣do(x))−P(y∣do(¬x))=P(y\mid do(x))-P(y\mid do(\neg x)); >0>0 positivo, <0<0 negativo, =0=0 neutro. Sprinkler: pioggia 0.915−0.34=0.5750.915-0.34=0.575, irrigatore 0.9225−0.46=0.46250.9225-0.46=0.4625. Simpson (P(Z=1)=357/700=0.51P(Z{=}1)=357/700=0.51): do(X=1)=0.93⋅0.51+0.73⋅0.49=0.832do(X{=}1)=0.93\cdot0.51+0.73\cdot0.49=0.832, do(X=0)=0.87⋅0.51+0.69⋅0.49=0.7818do(X{=}0)=0.87\cdot0.51+0.69\cdot0.49=0.7818, ACE =0.0502>0=0.0502>0 (frazioni esatte: 0.05370.0537): la medicina migliora la guarigione.

  • Backdoor. Cammino backdoor: da XX a YY con freccia entrante in XX. SS valido se blocca ogni backdoor e non contiene discendenti di XX: P(y∣do(x))=∑sP(y∣x,s)P(s)P(y\mid do(x))=\sum_sP(y\mid x,s)P(s). Un collider blocca da solo, ma condizionarci lo apre.

  • Esempi.

    • X→A→YX\to A\to Y, X→YX\to Y, B→XB\to X, B→C←DB\to C\leftarrow D, D→YD\to Y: validi {},{B},{D},{B,D},{B,C},{C,D},{B,C,D}\{\},\{B\},\{D\},\{B,D\},\{B,C\},\{C,D\},\{B,C,D\}; non validi {C}\{C\} e quelli con AA.
    • (1) Z→XZ\to X, Z→W→YZ\to W\to Y: {Z},{W},{Z,W}\{Z\},\{W\},\{Z,W\}; con solo WW osservato ∑wP(y∣x,w)P(w)\sum_wP(y\mid x,w)P(w).
    • (2) collider WW (Z→W←YZ\to W\leftarrow Y): {}\{\} o {Z}\{Z\}, non {W}\{W\}.
    • (3) {A,C},{B,C},{A,B,C}\{A,C\},\{B,C\},\{A,B,C\}, sei termini.
    • (4) con AA non osservato: {B,C}\{B,C\}, quattro termini; {B}\{B\} da solo no.
  • Verifica del modello. Se due insiemi validi danno risultati diversi sui dati, il modello causale è sbagliato.

  • Front-door (UU non osservato, X→Z→YX\to Z\to Y): P(z∣do(x))=P(z∣x)P(z\mid do(x))=P(z\mid x), P(y∣do(z))=∑x′P(y∣z,x′)P(x′)P(y\mid do(z))=\sum_{x'}P(y\mid z,x')P(x'), quindi P(y∣do(x))=∑zP(z∣x)∑x′P(y∣z,x′)P(x′).P(y\mid do(x))=\sum_zP(z\mid x)\sum_{x'}P(y\mid z,x')P(x'). Criterio: SS blocca i cammini diretti X→YX\to Y; nessun backdoor X→SX\to S; backdoor S→YS\to Y bloccati da XX. Impossibile se UU causa anche ZZ. Fumo: 0.54750.5475 (Esercizio - Aggiustamento front-door ed effetto del fumo sul cancro (laboratorio 8)).

  • Mediazione. CDE(z)=P(y∣do(x),do(z))−P(y∣do(x∗),do(z))=∑w[P(y∣x,z,w)−P(y∣x∗,z,w)]P(w)CDE(z)=P(y\mid do(x),do(z))-P(y\mid do(x^*),do(z))=\sum_w[P(y\mid x,z,w)-P(y\mid x^*,z,w)]P(w); ADE = media dei CDE. Condizionare sul mediatore ZZ (collider X→Z←WX\to Z\leftarrow W) crea dipendenza spuria. Condizione: S1S_1 blocca i backdoor Z→YZ\to Y, S2S_2 quelli X→YX\to Y senza le frecce entranti in ZZ. Numeri: CDE(0)=0.130CDE(0)=0.130, CDE(1)=0.260CDE(1)=0.260, mentre condizionando su ZZ si avrebbe 0.1130.113 e 0.2000.200.

  • Errori tipici: pesare con P(z∣x)P(z\mid x); includere un discendente di XX; condizionare sul collider; confondere do(x)do(x) con l'osservazione di xx.

Esercizi su questo argomento

Teoria collegata