El paquet rjags de R

1. Cicle de vida

2. Tipologia

3. Àmbit d'aplicació

4. Llenguatge de programació

Descripció

El paquet rjags permet usar des de R la llibreria JAGS (Just Another Gibbs Sampler) per a l’anàlisi de models bayesians jeràrquics, mitjançant la tècnica MCMC (Markov Chain Monte Carlo). Per a usar rjags cal haver instal·lat JAGS amb anterioritat, donat que és un component independent de R.

Per a definir els models a analitzar, JAGS usa una sintaxi pròpia per a especificar tots els elements que componen un model. Normalment el model s’emmagatzema en un fitxer de text, però en el cas de R, també és possible tenir-lo en una cadena. El model usa una sintaxi semblant a la dels llenguatges de programació tradicionals, on l’usuari declara constants, variables, taules, bucles, etc., utilitzats en la definició de les distribucions subjacents al model. De fet, el llenguatge usat és un dialecte del llenguatge BUGS (Bayesian inference Using Gibbs Sampling).

Enllaç al recurs

https://cran.r-project.org/web/packages/rjags/

Exemple d’ús

Suposem que volem modelar la probabilitat de perdre un partit en funció dels gols marcats a la primera part, i si es juga a casa o no. Això ho fem per a un equip en concret, del qual tenim un històric de partits que ha disputat, a casa o a fora, quants gols va marcar a la primera part i el resultat final del partit (derrota, empat o victòria). Els empats els considerarem com les victòries, en el sentit que no són derrotes, per tal de tenir una variable objectiva binària (perd / no perd).

Per tant, la variable resultat és una variable binària que segueix una distribució de Bernoulli, i que volem modelar amb una regressió logística, usant les altres variables com a independents, és a dir, si juga a casa o no i el nombre de gols marcats a la primera part. No desenvoluparem tot el model, només indicarem com ho faríem en JAGS usant rjags.

El model logístic el definim com:

yi ∼ bern(πi), i = 1, . . . , N

logit(πi) = β0 + β1 casai + β2 golsi

on yi és la variable amb el resultat del partit i-èssim, casai és si juga a casa o no, i golsi els gols marcats. La resta són els elements que componen el model i volem estimar a partir de les dades. Aleshores, usant rjags podem definir el model de la forma següent, que resulta la part més interessant:

# variable amb el model

modelString = "
  model {
    # versemblança
    for (i in 1:N) {
      y[i] ~ dbern(pi[i])
      logit(pi[i]) <- beta[1]+beta[2]*casa[i]+beta[3]*gols[i]
    }

    # distribucions a priori dels paràmetres (les tres beta)
    for (j in 1:3) {
      beta[j] ~ dnorm(0.0, 0.0001)
    }
  }
"

Amb rjags podem aleshores usar el model anterior per a ajustar-lo a unes dades en particular que se suposa llegirem d’un fitxer (y, casa, gols). Les variables que hem de passar a la funció jags.model() són aquestes juntament amb el nombre de dades disponibles N, la inicialització dels paràmetres del model i la cadena amb la descripció del model. Un cop executada la simulació, podem obtenir l’estimació dels paràmetres betai que determinen el model que volíem construir, a banda de mostrar gràficament com és de bona aquesta estimació.

Enllaços relacionats

Llibreria JAGS: http://mcmc-jags.sourceforge.net/

BUGS: https://www.mrc-bsu.cam.ac.uk/software/bugs/