Inverse probability weighting. ESS

El objetivo de esta técnica es conseguir unos pesos que al aplicarlos los datos se parezcan lo más posible a los que hubiéramos tenido si hubiéramos hecho un diseño experimental.

El diseño experimental siempre va a ser mejor, puesto que va a permitirnos equilibrar incluso aunque hubiera variables de confusión no medidas.

No obstante, si hay suficientes variables relacionadas con la probabilidad de recibir el tratamiento, el uso de esta técnica puede dar buenos resultados, incluso en diseños experimentales.

Datos

Son datos de la encuesta de estructura salarial del INE. Existe cierta representatividad, el INE provee unos pesos que permiten hacer ciertas inferencias, pero puede que no todas.

Leemos y calculamos ciertas cosas como el salario neto. Estas cosas vienen en la documentación y nota metodológica.

La variable control indica cuando es 1 que es sector público y 2 cuando es privado

¿Se gana más en el sector público o en el privado?

Asumiendo que la ponderación del INE nos da representatividad.

Si queremos obtener correctamente los errores estándar y los intervalos de confianza, podemos usar la librería survey.

Pues nos sale que en el sector público se gana más. Pero, ¿para un sector en concreto y con nivel de estudios determinado podemos decir lo mismo? ¿ y se aplican los mismos pesos?

Pregunta causal

Vamos a plantearnos una pregunta causal más concreta. Para aquellos que están en el sector sanitario CNAE = Q0, y con nivel educativo de diplomados, ¿Estar en el sector público “causa” que se gana más salario neto?

Qué asunciones podemos hacer, qué variables pensamos que afectan, de entre las que tenemos observadas

Dado que hemos fijado el sector CNAE y el nivel educativo, podríamos pensar en otras variables como el sexo, edad, habitat del municipio, tipo de jornada, años de antiguedad, tipo de contranto

Podríamos pensar que algunas de estas variables podrían ser variaables de confusión, es decir, afectan a si se está en un determinado sector y también pueden afectar al salario neto. Si tienes más años de antigüedad, pudiera ser que sea más probable estar en el sector público y además tener mayor salario.

Si se hubiera podido hacer un diseño experimental habríamos asignado aleatoriamente a los individuos a un sector u otro, y la distribución de estas variables serían similares en ambos grupos.

Grafo casual

Show the code
ess_dag <- dagify(
  salneto ~ treatment + sexo + edad + habitat + jornada + antiguedad + tipo_contrato,
  treatment ~ edad +  sexo + habitat + jornada + antiguedad,
  exposure = "treatment",
  outcome = "salneto",
  coords = list(
    x = c(
      salneto = 7,
      treatment = 3,
      sexo = 4,
      edad = 4,
      habitat = 5,
      jornada = 5,
      antiguedad = 6,
      tipo_contrato = 6
    ),
    y = c(
      salneto = 0,
      treatment = 0,
      sexo = 1,
      edad = -1,
      habitat = 1,
      jornada = -1,
      antiguedad = 1,
      tipo_contrato = -1
    )
  ),
  labels = c(
    salneto = "Salario neto",
    treatment = "Sector (público/privado)",
    sexo = "sexo",
    edad = "edad",
    habitat = "Tamaño municipio",
    jornada = "Jornada completa o parcial",
    antiguedad = "Años de experiencia",
    tipo_contrato = "tipo de contrato (indefinido, temporal)"
  )
)

p1 <- ess_dag |>
  tidy_dagitty() |>
  node_status() |>
  ggplot(
    aes(x, y, xend = xend, yend = yend, color = status)
  ) +
  geom_dag_edges() +
  geom_dag_point() +
  geom_dag_label(color = "black") +
  # geom_dag_label_repel() +
  scale_color_okabe_ito(na.value = "grey90") +
  theme_dag() +
  theme(legend.position = "none") +
  coord_cartesian(clip = "off")
p1

Solapamiento

En primer lugar seleccionamos el subgrupo que vamos a estudiar.

Veamos si hay solapamiento.

edad es variable categórica. Viendo la proporción de gente en cada grupo de edad y sector, se ve que hay solapamiento, pero la distribución es bastante diferente.

Años de antigüedad.

Probad a ver la distribución de habitat (estrato2) o tipo de contrato (tipo_con)

Una forma de ver si el “peso” que da la encuesta del INE es adecuado para ver si corrige el desbalanceo es calcular las diferencias estandarizadas aplicando ese peso y compararlas con las de sin aplicar

SMDs

Lo podemos ver un “love plot”

En este caso, como el peso de la encuesta está pensado para dar representatividad de la población española, no nos vale para contestar a la pregunta causal planteada.

Inverse probability weighting

Modelamos el tratamiento en función de las covariables que pensamos que pueden ser de confusión

Usamos una regresión logística, pero como se ha comentado antes, podría ser otro modelo

Aplicamos los pesos

¿Este peso ha conseguido balancear las covariables ?

Algunas preguntas. ¿Qué pasa si añadimos el tipo de contrato al modelo del tratamiento? ¿El tipo de contrato es una variable de confusión, habría que estratificar?

Estimación del efecto

Para estimar el efecto usando ipw, podemos hacer simplemnente la media ponderada.

También podemos usar un modelo lineal, y nos evitamos hacer bootstrap usando la librería survey

Que comparado con no usar ipw, vemos que da un efecto más pequeño, pero en el mismo sentido

Y si usamos los pesos de la encuesta, el efecto es mayor aún.

¿Y si ajustamos además por tipo de contrato?

Podemos ver el efecto dentro de cada nivel de tipocon

Y sin ipw

Por eso es importante definir bien la pregunta causal y dónde se aplica, además de tener en cuenta que con la inferencia causal queremos responder a “¿qué habría pasado si..?”. Una de las mejores formas es hacer un RCT, pero no siempre es posible, técnicas como el ipw intentan crear una pseudo población que se parezca a lo que se obtendría haciendo un RCT

Resumen

Efecto sobre el salario en sector sanitario y máximo estudios diplomados. ¿cuánto más se gana en sector público vs privado?

  • Modelo sin peso, sin condicionar por variables: 727
  • Modelo sin peso, condicionando por variables: 388
  • Modelo con pesos ine, sin condicionar por variables: 787
  • Modelo con pesos ine, condicionando por variables: 323
  • Modelo con ipw, sin condicionar por variables: 343 ( 284, 402)
  • Modelo con ipw, condicionando además por tipocon: 515 ( 445, 585)

¿Cuál es el verdadero efecto? Yo no lo sé, pero en las técnicas de inferencia causal al menos se explicitan las asunciones ( grafo), se analiza solapamiento, positividad, etc. En ausencia o imposibilidad de realizar un RCT es lo mejor que tenemos.