INTRODUCCIÓN

Es ampliamente reconocido que la estructuración poblacional puede ocasionar asociaciones falsas en estudios de asociación genética. Sin embargo, no se suele hacer el mismo énfasis acerca de cómo la estratificación poblacional puede afectar la capacidad de detectar una asociación verdadera. En esta simulación, se considerarán 2 loci: Un SNP (“Q”) que influencia fuertemente un rasgo binario (por ejemplo: sano, enfermo), y un marcador (M) en desequilibrio de ligamiento perfecto con el SNP Q. Por simplicidad, se asumirá un modelo completamente dominante, por lo que se puede categorizar el genotipo (de cada loci) en 0 (por ejemplo, genotipo q/q o m/m) y 1 (genotipos Q/q y Q/Q y M/m o M/M)

SIMULACIÓN

Existen dos poblaciones con diferentes perfiles de desequilibrio de ligamiento: En la población “0”, el alelo Q solo se presenta en cromosomas con el alelo M; mientras que en la población “1”, el alelo “Q” solo se presenta en cromosomas con el alelo “m”. Por lo tanto, solo existen 6 combinaciones de genotipos y población de origen, detalladas en la siguiente tabla

pob <- rep(c(0,1), each = 3) 
q <- rep(c(1,0,0), 2)
m <- rep(c(1,0), 3)
df <- data.frame(pob,q,m)
df
##   pob q m
## 1   0 1 1
## 2   0 0 0
## 3   0 0 1
## 4   1 1 0
## 5   1 0 1
## 6   1 0 0

Se muestrean “n” individuos de estas dos poblaciones:

n = 2e3 ## Tamaño muestral
set.seed(123)
ind <- sample(1:6, size = n, rep = T)  
dat <- data.frame(df[ind,])

Y se asignan los fenotipos mediante un modelo logístico; es decir, empleando una distribución binomial dependiente del SNP Q. Se asumirá que el OR (Odds Ratio) de Q es 10 (efecto muy grande), y se escogerá un intercepto (b0) arbitrario:

or <- 10
b1 = log(or)
print(b1)
## [1] 2.302585
b0 = -3
x1 = dat$q

logit = b0 + b1*x1
probs = 1/(1+exp(-logit))
fenotipo_modelado <- rbinom(n = n, size = 1, prob = probs)

Just in case… Se verifica que el modelo haya sido correctamente especificado, para ello se emplea una regresión logística con Q como variable predictora:

mod <- glm(fenotipo_modelado ~ x1, family = "binomial")
summary(mod)$coefficients
##             Estimate Std. Error   z value      Pr(>|z|)
## (Intercept) -3.02322  0.1311019 -23.06008 1.165250e-117
## x1           2.28817  0.1544410  14.81582  1.157694e-49

El coeficiente predicho es 2.29, muy cerca del coeficiente especificado: log(10) = 2.30. Por lo tanto, el análisis de asociación directa con el SNP Q (verderamente funcional) permite estimar con precisión su efecto sobre el fenotipo. ¿Qué pasa si se emplea el marcador en vez de Q, tal como suele hacerse en los estudios de asociación (p. ej, GWAS)? Dado que se sabe que existe estructuración poblacional, también se incluirá la variable “población” en el modelo, lo que también es usual en los GWAS.

dat <- cbind(dat, fenotipo_modelado)
mod2 <- glm(dat$fenotipo_modelado ~ dat$m + dat$pob, family = "binomial")
summary(mod2)$coefficients
##               Estimate Std. Error    z value     Pr(>|z|)
## (Intercept) -1.8035802  0.1307426 -13.794898 2.735394e-43
## dat$m       -0.2021170  0.1374092  -1.470913 1.413146e-01
## dat$pob      0.1920872  0.1375646   1.396342 1.626116e-01

No fue posible detectar la asociación del marcador con el fenotipo, a pesar de que este se encuentra en desequilibrio de ligamiento perfecto con Q. Otra alternativa sería realizar un análisis por separado para cada población:

Población 0:

dat0 <- subset(dat, pob == "0")
mod0 <- glm(dat0$fenotipo_modelado ~ dat0$q , family = "binomial")
summary(mod0)$coefficients
##              Estimate Std. Error    z value     Pr(>|z|)
## (Intercept) -3.162501  0.1964801 -16.095785 2.730874e-58
## dat0$q       2.266413  0.2295344   9.873957 5.399145e-23

Población 1:

dat1 <- subset(dat, pob == "1")
mod1 <- glm(dat1$fenotipo_modelado ~ dat1$q , family = "binomial")
summary(mod1)$coefficients
##              Estimate Std. Error   z value     Pr(>|z|)
## (Intercept) -2.896886  0.1761617 -16.44447 9.188129e-61
## dat1$q       2.316412  0.2093247  11.06612 1.831579e-28

Como era de esperarse, al realizar el análisis para cada población por separado, sí fue posible detectar la asociación.

CONCLUSIÓN

A primera vista, este ejemplo puede parecer bastante obvio. Sin embargo, su importancia radica en que el enfoque inicial (analizar todos los datos combinados e incluir una variable que describe la población de origen) es el más empleado en los estudios de asociación genética. Aunque se trata de un caso extremo (desequilibrio de ligamiento perfecto pero en direcciones opuestas en cada población), es evidente que la estructuración poblacional puede afectar gravemente el poder de detección de las variantes genéticas que influencia sobre un fenotipo.