Propensity Score Matching

1. Ciclo de vida

3. Ámbito de aplicación

4. Lenguaje de programación

Descripción

Supongamos que queremos medir el impacto de una intervención en un determinado escenario, hablando de manera general, para saber lo eficaz que es. No siempre es posible llevar a cabo un diseño experimental y contar con un grupo de control y un grupo experimental en el que medir el impacto de la intervención, de modo que se minimicen los efectos causados por las variables que definen la población. Si las personas participantes en el escenario no se seleccionan al azar, entonces puede haber un sesgo de autoselección y el resultado del análisis no mediría realmente el impacto de la intervención, sino ese sesgo.

Una forma de resolver este problema es manipular los grupos de control y experimentales que están disponibles, con el fin de eliminar el sesgo de autoselección, mediante el uso de pesos y muestreo, con el fin de tratar de equilibrarlos y hacerlos lo más equivalentes posible, como si realmente se generaran eligiendo a los individuos en cada grupo al azar. Se trata de evitar que en los grupos de control y experimentales caigan los individuos que son más propensos a hacerlo, introduciendo un sesgo, de ahí el nombre de la técnica.

Lo que hace esta técnica es asignar una puntuación (score) para cada individuo (matching) como más propensos o no a formar parte del grupo experimental (propensity), de modo que los individuos que forman parte del grupo experimental sean lo más similares posible a los del grupo de control, como si todos ellos hubieran sido elegidos aleatoriamente de la misma población. Es decir, lo que se hace es calcular para cada individuo la probabilidad de formar parte del grupo experimental dependiendo de sus características.

Enlace al recurso

https://www.kdnuggets.com/2018/01/propensity-score-matching-r.html

Ejemplo de uso

Por ejemplo, supongamos que queremos medir el impacto del tabaquismo en algún aspecto de la salud, como el pulso arterial en reposo. Los participantes tienen todos, obviamente, una edad, un sexo, un peso y una altura conocidos, pero por supuesto, el hecho de participar o no en el grupo experimental (fumadores) no es aleatorio. Y no tendría sentido (ni sería ético) dividir a la población en dos grupos al azar y hacer fumar a la mitad que forma parte del grupo experimental y prohibirlo al resto.

Si tratamos de construir un modelo que prediga el pulso arterial a partir de la edad, el sexo, el peso y la altura, y el hecho de fumar o no (el efecto que queremos medir), podría verse afectado por el hecho de que fumar o no puede verse afectado, al mismo tiempo, por la edad y el sexo (pero no por el peso y la altura), lo que introduce un sesgo entre los grupos de control y experimental.

Con el paquete de MatchIt de R, se puede crear un modelo que intente minimizar los sesgos causados por la diferencia entre los grupos de control y experimental. Para ello, proporciona diferentes mecanismos, dependiendo de cómo se ajusten los dos grupos, utilizando el parámetro method de la función matchit():

  • method=”exact”: se buscant pares de individuos (en este caso, un fumador y un no fumador) con las mismas características (en este caso, sexo, edad, peso y altura), de modo que el conjunto resultante tendrá características casi idénticas con respecto a estas variables.
  • method=”subclass”: a veces es imposible encontrar un gran número de pares idénticos, uno en cada grupo, ya sea porque el número de individuos se reduce o porque las variables pueden tener muchos valores. Esta opción genera subclases de individuos para agruparlos en casillas y, a continuación, pueden elegir parejas como en el caso anterior.
  • method=”nearest”: lo que hace este método es elegir a los mejores individuos (en el sentido de más cercanos) del grupo de control para cada individuo del grupo experimental, utilizando una función de distancia.
  • method=”optimal”: se trata de una extensión del método anterior en el que los individuos se eligen minimizando no la distancia a cada individuo, sino globalmente, teniendo en cuenta todas las distancias calculadas.
  • method=”full”: es una combinación de métodos «subclass» y «optimal», donde los individuos se clasifican en subclases, pero teniendo en cuenta un criterio global para optimizar.
  • method=”genetic”: en este caso, el peso de cada variable utilizada para hacer el matching entre individuos se pondera según un algoritmo genético.
# cargamos el paquete
require(MatchIt)

# supongamos que los datos se encuentran en la variable datos
# utilizamos el método “nearest”
m.out = matchit(fumador ~ sexo + edad, data=datos, method=”nearest”)

Después de utilizar la función matchit(), se pueden utilizar otras funciones típicas de R para inspeccionar el resultado, como summary() y plot(). A continuación, utilizando la función de match.data() basada en el resultado de matchit() se puede obtener un nuevo conjunto de datos que nos permitiría estimar el pulso utilizando el modelo adecuado y ver el efecto de la variable fumador en el pulso medido.

# generamos el nuevo conjunto de datos
datosOK = match.data(m.out)

Enlace relacionado

El paquet MatchIt de R: https://cran.r-project.org/web/packages/MatchIt/index.html