Incerteza e rigor:

explorando questões de intuição e probabilidade na busca científica por causalidades

Ronaldo Lima Jr.

Universidade de Brasília | CNPq

Fonte: Enc. Metallum (2016), after Jakub Marian; World Happiness Report (2022). Chart by Piotr Migdał

Por quê?

Correlation does not mean causation


Correlação não implica causação

[https://www.youtube.com/watch?v=mBEA7PKDmiY]


https://www.tylervigen.com/spurious-correlations


https://www.tylervigen.com/spurious-correlations

Correlações espúrias

mas também

“Todos os modelos são errados, mas alguns são úteis”

(George E. P. Box)

Dados reais

\(\Downarrow\)

modelo (científico/estatístico)

\(\Downarrow\)

estimativa do mundo real

mundo real

dados + modelo

estimativa

Observação de estrelas

(sócio, step, Varbrul/Goldbvarb)

N = 150

dsim = data.frame(
  x1 = rnorm(N), 
  x2 = rnorm(N), 
  x3 = rnorm(N), 
  x4 = rnorm(N), 
  x5 = rnorm(N), 
  x6 = rnorm(N), 
  x7 = rnorm(N), 
  x8 = rnorm(N), 
  x9 = rnorm(N), 
  x10 = rnorm(N),
  y = rnorm(N))

summary(lm(y ~ x1+x2+x3+x4+x5+x6+x7+x8+x9+x10, dsim))

Então quais variáveis incluir?

DAGs

DAG = Directed Acyclic Graph

Grafo Dirigido Acíclico

  • Grafo
  • Dirigido
  • Acíclico
  • Modelo científico vs Modelo estatístico
  • Permitem modelar (um)a causalidade
  • Permitem identificar e bloquear variáveis de confusão (confounding variables)

Grafos Dirigidos Acíclicos


Grafos Dirigidos Acíclicos

Grafos Dirigidos Acíclicos

Variáveis de confusão

Forquilha (Fork)

Forquilha

  • Há associação entre X e Y, mas
  • X não causa Y (Z causa os dois)
  • A associação desaparece quando se estratifica por Z
    • Estratifique! (inclua)
  • \(X \leftarrow Z \rightarrow Y\)

Forquilha

Exemplo categórico

\(X \leftarrow Z \rightarrow Y\)

n = 1000
z = rbernoulli(n, 0.5)
x = rbernoulli(n, (1-z)*0.1 + z*0.9)
y = rbernoulli(n, (1-z)*0.1 + z*0.9)

table(x,y)
       y
x       FALSE TRUE
  FALSE   433   94
  TRUE     77  396


cor(x,y)
[1] 0.6580115
table(x[z==0], y[z==0])
       
        FALSE TRUE
  FALSE   421   38
  TRUE     43    5
table(x[z==1], y[z==1])
       
        FALSE TRUE
  FALSE    12   56
  TRUE     34  391


round(cor(x[z==0], y[z==0]), 3)
[1] 0.022
round(cor(x[z==1], y[z==1]), 3)
[1] 0.114

Forquilha

Exemplo contínuo

\(X \leftarrow Z \rightarrow Y\)

n = 300
z = rbernoulli(n)
x = rnorm(n, 2*z-1)
y = rnorm(n, 2*z-1)

plot(x, y)

Forquilha

Exemplo contínuo

\(X \leftarrow Z \rightarrow Y\)

n = 300
z = rbernoulli(n)
x = rnorm(n, 2*z-1)
y = rnorm(n, 2*z-1)

plot(x, y)
abline(lm(y~x))

Forquilha

Exemplo contínuo

\(X \leftarrow Z \rightarrow Y\)

n = 300
z = rbernoulli(n)
x = rnorm(n, 2*z-1)
y = rnorm(n, 2*z-1)

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

Forquilha

Exemplo contínuo

\(X \leftarrow Z \rightarrow Y\)

n = 300
z = rbernoulli(n)
x = rnorm(n, 2*z-1)
y = rnorm(n, 2*z-1)

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

abline(lm(y[z==1] ~ x[z==1]), 
       col=2, lwd=3)
abline(lm(y[z==0] ~ x[z==0]), 
       col=4, lwd=3)

Forquilha - ilustração 1

Tosse causa dor de garganta?

Forquilha - ilustração 1

Tosse causa dor de garganta?

  • Talvez, mas é preciso condicionar/estratificar por Covid para ver o real efeito de tosse sobre dor de garganta

Forquilha - ilustração 2

Participar mais na aula causa tirar maiores notas?

Forquilha - ilustração 2

Participar mais na aula causa tirar maiores notas?

  • Pode ser que sim, mas também pode ser que outra coisa cause participar mais e tirar maiores notas
    • Se motivação puder ser essa variável de confusão, é preciso condicionar/estratificar por motivação

Mediador (Pipe/Mediator)

Mediador

  • associação entre X e Y
  • X causa Y por meio de Z
  • A associação desaparece quando se estratifica por Z
    • Não estratifique! (não inclua)
  • \(X \rightarrow Z \rightarrow Y\)

Mediador

Exemplo categórico

\(X \rightarrow Z \rightarrow Y\)

n = 1000
x = rbernoulli(n, 0.5)
z = rbernoulli(n, (1-x)*0.1 + x*0.9)
y = rbernoulli(n, (1-z)*0.1 + z*0.9)

table(x,y)
       y
x       FALSE TRUE
  FALSE   426   81
  TRUE     95  398


cor(x,y)
[1] 0.6480473
table(x[z==0], y[z==0])
       
        FALSE TRUE
  FALSE   421   38
  TRUE     61    7
table(x[z==1], y[z==1])
       
        FALSE TRUE
  FALSE     5   43
  TRUE     34  391


round(cor(x[z==0], y[z==0]), 3)
[1] 0.024
round(cor(x[z==1], y[z==1]), 3)
[1] 0.027

Mediador

Exemplo contínuo

\(X \rightarrow Z \rightarrow Y\)

n = 300
x = rnorm(n)
z = rbernoulli(n, arm::invlogit(x))
y = rnorm(n, 2*z-1)

plot(x, y)

Mediador (Pipe/Mediator)

Exemplo contínuo

\(X \rightarrow Z \rightarrow Y\)

n = 300
x = rnorm(n)
z = rbernoulli(n, arm::invlogit(x))
y = rnorm(n, 2*z-1)

plot(x, y)
abline(lm(y~x))

Mediador

Exemplo contínuo

\(X \rightarrow Z \rightarrow Y\)

n = 300
x = rnorm(n)
z = rbernoulli(n, arm::invlogit(x))
y = rnorm(n, 2*z-1)

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

Mediador

Exemplo contínuo

\(X \rightarrow Z \rightarrow Y\)

n = 300
x = rnorm(n)
z = rbernoulli(n, arm::invlogit(x))
y = rnorm(n, 2*z-1)

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

abline(lm(y[z==1] ~ x[z==1]), 
       col=2, lwd=3)
abline(lm(y[z==0] ~ x[z==0]), 
       col=4, lwd=3)

Mediador – ilustração 1

Fogo causa fumaça, que causa o alarma soar

  • O fogo causa o alarme soar?
    • Sim! Por meio da fumaça

Mediador – ilustração 2

O novo método de ensino aumenta a motivação, que aumenta a nota na prova

  • O novo método de ensino causa melhores resultados?
    • Sim! Por meio da motivação
    • Mas não será visto se condicinar/estratificar por motivação!

Colisor (Collider)

Colisor

  • Não há associação entre X e Y
  • X e Y causam Z, mas aparece uma associação entre X e Y quando se estratifica por Z
    • Não estratifique! (não inclua)
  • \(X \rightarrow Z \leftarrow Y\)

Colisor

Exemplo categórico

\(X \rightarrow Z \leftarrow Y\)

n = 1000
x = rbernoulli(n, 0.5)
y = rbernoulli(n, 0.5)
z = rbernoulli(n, 
               ifelse(x+y>0, 
                      0.9, 0.2))

table(x,y)
       y
x       FALSE TRUE
  FALSE   241  266
  TRUE    262  231


cor(x,y)
[1] -0.05609051
table(x[z==0], y[z==0])
       
        FALSE TRUE
  FALSE   207   27
  TRUE     30   16
table(x[z==1], y[z==1])
       
        FALSE TRUE
  FALSE    34  239
  TRUE    232  215


round(cor(x[z==0], y[z==0]), 3)
[1] 0.239
round(cor(x[z==1], y[z==1]), 3)
[1] -0.397

Colisor

Exemplo contínuo

\(X \rightarrow Z \leftarrow Y\)

n = 300
x = rnorm(n)
y = rnorm(n)
z = rbernoulli(n, 
               arm::invlogit(2*x+2*y-2))

plot(x, y)

Colisor

Exemplo contínuo

\(X \rightarrow Z \leftarrow Y\)

n = 300
x = rnorm(n)
y = rnorm(n)
z = rbernoulli(n, arm::invlogit(2*x+2*y-2))

plot(x, y)
abline(lm(y~x))

Colisor

Exemplo contínuo

\(X \rightarrow Z \leftarrow Y\)

n = 300
x = rnorm(n)
y = rnorm(n)
z = rbernoulli(n, arm::invlogit(2*x+2*y-2))

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

Colisor

Exemplo contínuo

\(X \rightarrow Z \leftarrow Y\)

n = 300
x = rnorm(n)
y = rnorm(n)
z = rbernoulli(n, arm::invlogit(2*x+2*y-2))

cols = c(4,2)

plot(x, y, col=cols[z+1])
abline(lm(y~x))

abline(lm(y[z==1] ~ x[z==1]), 
       col=2, lwd=3)
abline(lm(y[z==0] ~ x[z==0]), 
       col=4, lwd=3)

Colisor - ilustração 1

Megan Fox

Colisor – ilustração 1

Mais talento causa menos beleza? Menos beleza causa mais talento?

Colisor – ilustração 1

Só os 85% mais talentosos ou mais bonitos viram atores

Colisor – ilustração 1

Cria um viés de seleção entre os atores e entre os não atores!

Colisor – ilustração 2

Seleção de propostas em edital de fomento por pontencial de impacto e rigor científico

Colisor – ilustração 2

Os 85% melhores são selecionados

Colisor – ilustração 2

Cria um viés de seleção entre os selecionados e entre os não selecionados!

Descendente (Descendant)

Descendente

  • Pode haver um descendente em qualquer variável
  • Neste caso (de pipe/mediador), X causa Y por meio de Z
  • Como Z causa A, a associação de X e Y diminui com a estratificação por A
    • Não estratifique! (não inclua)

Descendente

n = 1000
x = rbernoulli(n, 0.5)
z = rbernoulli(n, (1-x)*0.1 + x*0.9)
y = rbernoulli(n, (1-z)*0.1 + z*0.9)
a = rbernoulli(n, (1-z)*0.1 + z*0.9)

table(x,y)
       y
x       FALSE TRUE
  FALSE   426   81
  TRUE     95  398


cor(x,y)
[1] 0.6480473
table(x[a==0], y[a==0])
       
        FALSE TRUE
  FALSE   361   40
  TRUE     57   50
table(x[a==1], y[a==1])
       
        FALSE TRUE
  FALSE    65   41
  TRUE     38  348


round(cor(x[a==0], y[a==0]), 3)
[1] 0.393
round(cor(x[a==1], y[a==1]), 3)
[1] 0.52

Descendente – ilustração

  • Método novo causa bons resultados por meio da motivação
  • Enjoyment é um subproduto de motivação (um proxy)
    • condicionar/estratificar por enjoyment diminuirá a associação entre método e resultado

Variáveis de confusão

ForquilhaEstratifique!

ColisorNão estratifique!

MediadorNão estratifique!


DescendenteNão estratifique!

Modelos de causalidade

Amantar reduz doenças na infância?

Modelos de causalidade

Amantar reduz doenças na infância?

Modelos de causalidade

Amantar reduz doenças na infância?

Modelos de causalidade

Amantar reduz doenças na infância?

From: https://health.ucdavis.edu/media-resources/ctsc/documents/pdfs/directed-acyclic-graphs20220209.pdf

Modelos de causalidade

O que causa aprender uma L2?

Modelos de causalidade

O que causa aprender uma L2?

Modelos de causalidade

O que causa aprender uma L2?

Modelos de causalidade

O que causa aprender uma L2?

Modelos de causalidade

O que causa aprender uma L2?

Modelos de causalidade

O que causa aprender uma L2?

O que fazer???

O que fazer?

  1. Estudar, estudar, estudar!
  2. Esboçar um modelo de causalidade (modelo científico) para
  1. refletir sobre causalidades do seu fenômeno
  2. controlar variáveis de confusão
  1. Incluir incerteza/dúvida nos seus resultados
  1. na redação dos resultados
  2. com intervalos nas análises quantitativas
  3. com múltiplos parâmetros (conhecimento prévio, intervalos [de confiança/credibilidade], distribuições, tamanho de efeito, poder estatístico, etc.)

Estatística bayesiana

Dados simulados

bilíngue1 = rbeta(100,8,2)
bilíngue2 = rbeta(100,8.2,2)
bilíngue3 = rbeta(100,8.2,1.5)
trilíngue1 = rbeta(100,9,2)
trilíngue2 = rbeta(100,9.1,2)
trilíngue3 = rbeta(100,9,1) 

Lima Jr. Estatística bayesiana apliacada a estudo de bilinguismo (Kupske, Fontes & Perozzo no prelo)

Modelo de regressão linear frequentista

lm(simdata, nota ~ grupo + tempo)


Predictor Estimates CI p
(Intercept) 0.79 0.78 – 0.81 <0.001
grupo[trilingue] 0.03 0.01 – 0.04 0.002
tempo[2] 0.01 -0.01 – 0.03 0.253
tempo[3] 0.07 0.04 – 0.09 <0.001
Observations 600
Rˆ2 / Rˆ2 adjusted 0.079/0.075

Modelo de regressão linear bayesiano

brms::brm(simdata,
          nota ~ grupo + tempo,
          priors = c(prior(normal(0.83, 0.1), class = Intercept),
                     prior(normal(0, 0.1), class = b),
                     prior(normal(0, 0.01), class = sigma)))


Predictor Estimates CI (95%)
(Intercept) 0.79 0.78 – 0.81
grupo[trilingue] 0.03 0.01 – 0.04
tempo[2] 0.01 -0.01 – 0.03
tempo[3] 0.07 0.05 – 0.09
Observations 600
Rˆ2 Bayes 0.082

Priors (distribuições a priori)

Posterior (distribuição a posteriori)

Posterior (distribuição a posteriori)

Com procentagem dentro da ROPE (Region of Practical Equivalence)

Valores previstos pelo modelo frequentista:

Valores previstos pelo modelo bayesiano:

Exemplos reais

Kupske, F. F., Lima Jr, R. M., & Alves, U. K. (2023). A comparison between Full Time Equivalent and Length of Residence as measurements of time in bilingual speech research: the case of first language attrition. Ilha do Desterro, 76(3), 177-198.

Exemplos reais

LIMA JR, R. M. (2022). A dynamic account of the development of English (L2) vowels by Brazilian learners through communicative teaching and through explicit instruction. In: Alves & Albuquerque. Second Language Pronunciation: Different Approaches to Teaching and Training, Berlin: De Gruyter Mouton, 147-166.

Exemplos reais

Lima Jr. & Alves (prelo)