Escore de Propensão

Em inferência causal distinguimos dois cenários: estudos experimentais, nos quais o pesquisador controla o mecanismo de atribuição - por exemplo, usando RCT - e conhece as probabilidades de receber o tratamento; e estudos observacionais, nos quais a alocação não é controlada e pode haver vieses por confusão. Em estudos observacionais precisamos, de certa forma, “simular” a randomização para reduzir vieses decorrentes de diferenças nas covariáveis pré‑tratamento entre tratados e controles.

A definição formal é:

e(X)=P(D=1|X)

Onde D é a variável de tratamento e X covariáveis.

Ao condicionarmos nas covariáveis, o escore de propensão controla as variáveis de confusão, ajudando a alcançarmos a independência condicional — o tratamento D torna-se independente do resultado potencial, desde que se condicione no escore de propensão, Y(0),Y(1)D|e(X).

Cenários comuns

  • Viés de Seleção: Pessoas que escolhem receber um tratamento são fundamentalmente diferentes daquelas que não o recebem.
    • Exemplo: Indivíduos mais saudáveis ou mais ricos podem ter maior acesso ou propensão a um novo medicamento.
  • Noncompliance: Mesmo em ensaios clínicos, se houver falta de adesão total ao tratamento, o efeito causal (como o ATE ou ATT) calculado diretamente pode estar enviesado, comprometendo os resultados e sua interpretabilidade.

Nota

O conceito do Escore de Propensão é estritamente aplicado a tratamentos binários (discretizados ou dicotômicos: Sim/Não). Para tratamentos contínuos, um método utilizado é o Generalized Propensity Score (GPS), aonde modela envolta a densidade condicional, ao invés da probabilidade condicional.

Importante destacar, que ainda sim, precisamos que as premissas de ignorabilidade, positividade e SUTVA devem ser respeitadas antes de aplicar. Relembrando que comentei sobre esse tema em 5. Design de Experimentos.

Para utilizarmos o score de propensão, basta regredirmos a intervenção com suas covariáveis em modelo probabilístico, como a regressão logística. Seu resultado, final, seria a probabilidade de uma unidade receber o tratamento condicional dado às covariáveis pré‑tratamento X.

import statsmodels.formula.api as smf

# 1. Estimar o Escore de Propensão 
ps_model = smf.logit("""intervention ~ 
tenure + last_engagement_score + department_score
+ C(n_of_reports) + C(gender) + C(role)""", data=df).fit(disp=0)

# 2. Adicionar o Escore de Propensão como nova coluna
data_ps = df.assign(
    propensity_score = ps_model.predict(df),
)

data_ps[["intervention", "engagement_score", "propensity_score"]].head()

# 3. Estimar o Efeito Causal usando o Escore de Propensão como covariável
model = smf.ols("engagement_score ~ intervention + propensity_score",
                data=data_ps).fit()

# O coeficiente 'intervention' neste modelo representa o ATE ajustado pelo escore de propensão
print("ATE Ajustado por Escore de Propensão:", model.params["intervention"])

Ponderação por Escore de Propensão Inverso

Uma vez tendo esse score, podemos estimar o efeito médio de tratamento. Uma das formas que podemos é por Ponderação por Score de Propensão Inverso (IPW).

A ideia de IPW é reponderar a sua amostra para criar uma pseudo-população onde a distribuição das variáveis de confusão X é a mesma nos grupos de tratamento D=1 e controle D=0. Isto imita as condições de um ensaio aleatório. O peso W atribuído a cada indivíduo é o inverso da probabilidade de o indivíduo ter recebido o tratamento que realmente recebeu. Essa probabilidade é o Escore de Propensão e^(x). Utilizando desta forma, estimamos um ATE em uma população observacional e você quiser criar uma pseudo‑população em que o tratamento é independente das covariáveis observadas.

Exemplo

Unidades Incomuns (Alto Peso):

  • Unidades que receberam um tratamento improvável (e.g., alto risco de rotatividade, mas não receberam o treino) recebem um peso alto.
    • Isso os torna mais representativos da população em geral, essencialmente forçando um balanceamento da amostra.

Unidades Comuns (Baixo Peso):

  • Unidades que receberam um tratamento provável recebem um peso baixo.

O peso para cada unidade Wi é calculado da seguinte forma, onde Di é o tratamento real recebido:

Wi=1P(Di|Xi)={1e^(xi)se Di=111e^(xi)se Di=0
Nota

Ao dar um peso alto a unidades tratadas que parecem unidades de controle, e unidades de controle que parecem unidades tratadas, o método garante que o grupo de tratamento e o grupo de controle na pseudo-população sejam comparáveis.

Efeito Causal=(Média ponderada do resultadose todos fossem tratados)(Média ponderada do resultadose ninguém fosse tratado)
# 1. Calcular os pesos IPW para cada grupo
weight_t = 1 / data_ps.query("intervention == 1")["propensity_score"]
weight_nt = 1 / (1 - data_ps.query("intervention == 0")["propensity_score"])

# 2. Obter os resultados (engagement_score) por grupo
t1 = data_ps.query("intervention == 1")["engagement_score"] 
t0 = data_ps.query("intervention == 0")["engagement_score"] 

# 3. Estimar o Resultado Potencial Médio (E[Y^t])
y1_num = sum(t1 * weight_t)  # Numerador: Somatório (Y * W) para T=1
y1_den = sum(weight_t)        # Denominador: Somatório (W) para T=1
y1 = y1_num / y1_den

y0_num = sum(t0 * weight_nt)  # Numerador: Somatório (Y * W) para T=0
y0_den = sum(weight_nt)       # Denominador: Somatório (W) para T=0
y0 = y0_num / y0_den

print("E[Y1] (Tratado):", y1)
print("E[Y0] (Controle):", y0)
print("ATE:", y1 - y0)

Estimador Duplamente Robusto

O Escore de Propensão e(X) e a Ponderação por Escore de Propensão Inverso (IPW) são ferramentas para controlar variáveis de confusão e simular a randomização em dados observacionais. O IPW, em particular, é um estimador baseado em design que se foca em balancear os grupos.
Entretanto, uma preocupação comum em inferência causal é a especificação incorreta dos modelos. E se o modelo que usamos para calcular o Escore de Propensão estiver errado? Isso nos leva à busca por estimadores mais resilientes.

O Conceito "Duplamente Robusto"

Um estimador é considerado Duplamente Robusto (Double Robust - DR) se a estimativa do efeito causal for consistente (ou seja, convergirá para o verdadeiro efeito causal) se:

  1. O modelo para o Escore de Propensão estiver corretamente especificado.
    OU
  2. O modelo para o outcome potencial que estima estiver corretamente especificado.

Em outras palavras, o estimador DR converge para o modelo que estiver correto. Isso confere uma vantagem e aumenta a confiança na estimativa final, pois você só precisa acertar em um dos dois modelos. A ideia central é que o estimador utiliza ambos os modelos - por exemplo, IPW + Regressão Logística - para construir um estimador para o resultado potencial.

Um estimador DR popular para o resultado potencial médio sob tratamento pode ser escrito como:

μtDR(μ^,e^)=1Ni=1N[μ^t(Xi)+Die^(Xi)e^(Xi)(Yiμ^t(Xi))]

Onde:

Se o Escore de Propensão estiver correto:

O termo Die^(Xi)e^(Xi) tenderá a zero na média, e o segundo termo todo se anulará.

Isto deixa apenas o primeiro termo, 1Ni=1Nμ^t(Xi), que converge para a estimativa do resultado do modelo. Neste caso, a estimativa DR se comporta como um estimador design-based.

Se o modelo estiver correto:

O segundo termo, (Yiμ^t(Xi)), tenderá a zero na média, pois μ^t(Xi) é uma previsão precisa de Yi.

A estimativa DR converge para um estimador outcome-based que se baseia primariamente no modelo.