Propensity Score Matching

1. Cicle de vida

3. Àmbit d'aplicació

4. Llenguatge de programació

Descripció

Suposem que volem mesurar l’impacte d’una intervenció en un cert escenari, parlant de forma general, per saber com és d’efectiva. No sempre és possible realitzar un disseny experimental i disposar d’un grup de control i un grup experimental sobre el qual mesurar l’impacte de la intervenció, de forma que es minimitzin els efectes causats per les variables que defineixen la població. Si els individus participants en l’escenari no són seleccionats aleatòriament, aleshores hi pot haver un biaix d’autoselecció i el resultat de l’anàlisi no mesuraria realment l’impacte de la intervenció, sinó aquest biaix.

Una manera de resoldre aquest problema és manipular els grups de control i experimental que es tenen, de forma que s’elimini el biaix d’autoselecció, mitjançant l’ús de pesos i mostreig, per intentar equilibrar-los i fer-los el més equivalents possibles, com si s’haguessin generat realment escollint els individus de cada grup de forma aleatòria. Es tracta d’evitar que en els grups de control i experimental hi caiguin els individus que són més propensos a fer-ho, introduint-hi un biaix, d’aquí el nom de la tècnica.

El que fa aquesta tècnica és assignar una puntuació (score) a cada individu (matching) segons sigui més propens o no a formar part del grup experimental (propensity), de forma que els individus que formen part del grup experimental siguin el més semblants possibles als del grup de control, com si tots s’haguessin triat aleatòriament de la mateixa població. És a dir, el que es fa és calcular per a cada individu la probabilitat de formar part del grup experimental en funció de les seves característiques.

Enllaç al recurs

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

Exemple d’ús

Per exemple, suposem que volem mesurar l’impacte de fumar sobre algun aspecte de la salut, com ara el pols arterial en repòs. Els individus participants tenen tots, òbviament, una edat, un sexe, un pes i una alçada coneguts, però clar, el fet de participar o no en el grup experimental (fumadors) no és aleatori. I no tindria sentit (ni seria ètic) dividir la població en dos grups aleatòriament i fer fumar a la meitat que forma part del grup experimental i prohibir-ho a la resta.

Si intentem construir un model que predigui el pols arterial a partir de l’edat, el sexe, el pes i l’alçada, i el fet de fumar o no (l’efecte que volem mesurar), es podria veure afectat pel fet que fumar o no es pot veure afectat, al mateix temps, per l’edat i el sexe (però no pel pes i l’alçada), que introdueix un biaix entre els grups de control i experimental.

Usant el paquet MatchIt de R es pot crear un model que intenta minimitzar els biaixos causats per la diferència entre els grups de control i experimental. Per a fer-ho proporciona diferents mecanismes, en funció de com s’ajusten els dos grups, usant el paràmetre method de la funció matchit():

  • method=”exact”: es busquen parelles d’individus (en aquest cas, un fumador i un no fumador) amb les mateixes característiques (en aquest cas, sexe, edat, pes i alçada), de forma que el conjunt resultant tindrà característiques gairebé idèntiques pel que fa a aquestes variables.
  • method=”subclass”: de vegades és impossible trobar un nombre gran de parelles idèntiques, un en cada grup, ja sigui perquè el nombre d’individus és reduït o perquè les variables poden tenir molts valors. Aquesta opció genera subclasses dels individus per a agrupar-los en caselles i aleshores poder escollir parelles com en el cas anterior.
  • method=”nearest”: el que fa aquest mètode és triar els millors (en el sentit de més propers) individus del grup de control per cada individu del grup experimental, usant una funció distància.
  • method=”optimal”: és una extensió del mètode anterior on els individus es trien minimitzant no la distància a cada individu sinó globalment, tenint en compte totes les distàncies calculades.
  • method=”full”: és una combinació dels mètodes “subclass” i “optimal”, on els individus es classifiquen en subclasses, però tenint en compte un criteri global a optimitzar.
  • method=”genetic”: en aquest cas, el pes de cada variable usada per a fer el matching entre individus es pondera d’acord a un algorisme genètic.
# carreguem el paquet
require(MatchIt)

# suposem que les dades es troben a la variable dades
# usem el mètode “nearest”
m.out = matchit(fumador ~ sexe + edat, data=dades, method=”nearest”)

Un cop s’ha usat la funció matchit(), es poden emprar les altres funcions típiques de R per a inspeccionar el resultat, com ara summary() i plot(). Aleshores, usant la funció match.data() a partir del resultat de matchit() es pot obtenir un nou conjunt de dades que ens permetria estimar el pols usant el model adequat i veure l’efecte que té la variable fumador sobre el pols mesurat.

# generem el nou conjunt de dades
dadesOK = match.data(m.out)

Enllaç relacionat

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