6 votos

Intervalos de confianza Bootstrap para el Fst de Weir y Cockerham

Estoy trabajando en el cálculo de intervalos de confianza bootstrap para el Fst de Weir y Cokerham. Quiero usar el método del percentil-t como se describe en este documento .

Estoy calculando el $F_{st}$ entre dos subpoblaciones en el caso de alelo único, loci múltiple como: $$ \hat \theta_W = \frac {\sum \limits_l a_l}{\sum \limits_l (a_l + b_l + c_l)} $$

como se describe en El documento de Weir y Cockerham de 1984 .

Mi plan actual es estimar la varianza de $\hat \theta$ al pasar por encima de los loci: $$ var(\hat \theta) \mathrel{\hat{=}} \frac {m - 1} {m} \sum \limits_{L = 1}^{m} (\hat \theta_{(L)} - \frac {1} {m} \sum \limits_{L = 1}^{m} \hat \theta_{(L)})^2 $$

donde $\hat \theta_{(L)}$ es la estimación de $\hat \theta$ obtenido al omitir el locus $L$ y $m$ es el número de loci.

Para obtener los intervalos de confianza, mis pasos son

  1. Realizar unas 1.000 réplicas bootstrap (no he calculado cuántas serán las apropiadas, iba a probar esto como base, y luego ir subiendo).

  2. En cada ronda, recogería una muestra aleatoria simple con reemplazo de los loci y calcularía el $F_{st}$ valor ( $\hat \theta^*$ ).

  3. Entonces usaría jackknifing para estimar la varianza de $\hat \theta^*$ . (Yo utilizaría el mismo método que el anterior)

  4. Entonces calcularía el estadístico t: $t^* = \frac {\hat \theta^* - \hat \theta} {\hat se_{\hat \theta^*}}$

  5. Una vez hecho el bucle for. Obtendría el intervalo de confianza con: $$ (\hat \theta - t^*_{(1 - \alpha / 2)} \hat se_{\hat \theta}; \hat \theta - t^*_{(\alpha / 2)} \hat se_{\hat \theta}) $$

(El intervalo de confianza procede de la entrada de Wikipedia sobre bootstrapping)

Mis principales preguntas son:

  1. ¿Es ésta la forma correcta de calcular los intervalos de confianza del bootstrap estudiado?

  2. Weir y Cockerham sugieren que también se podría hacer bootstrap sobre muestras en lugar de sobre loci, el primer artículo que cité y Weir & Cockerham hacen bootstrap sobre loci, ¿es este el mejor enfoque para comparar dos poblaciones? Iba con porque mi entendimiento era que podemos asumir independencia entre locus (asumiendo poca dependencia por ligamiento) y podría no ser capaz entre muestras en una subpoblación ya que podrían estar relacionadas.

Avísame si hay algún error o si se necesita más información.

Gracias.

Editar: Aquí hay algo de código R que he escrito para hacer esto. Primero encuentro las matrices a, b y c y calculo $\hat \theta$ entonces hago esto para encontrar su varianza:

findVar <- function(a, b, c) {
  theta.L <- c(rep(0, 10))
  for (i in 1:ncol(data)) {
    # remove locus i
    theta.L[i] <- sum(a[-i]) / sum(a[-i] + b[-i] + c[-i])
  }
  m <- ncol(data)
  mean.theta <- sum(theta.L) / m
  var.theta <- ((m - 1) / m) * sum((theta.L - mean.theta)^2)
  return (var.theta)
}
var.theta <- findVar(a, b, c)

Luego hice esto para encontrar los intervalos de confianza bootstrap:

t.i <- c(rep(0, 10))
m <- ncol(data)
aTemp <- c(rep(0, 10))
bTemp <- c(rep(0, 10))
cTemp <- c(rep(0, 10))
for (i in 1:1000) {
 list <- sample(1:m, m, replace = TRUE) 
 for (j in 1:m) {
   aTemp[j] <- a[list[j]]
   bTemp[j] <- b[list[j]]
   cTemp[j] <- c[list[j]]
 }
 theta.i <- sum(aTemp) / sum(aTemp + bTemp + cTemp)

 # find the variance
 var.theta.i <- findVar(aTemp, bTemp, cTemp)

 t.i[i] <- (theta.i - theta) / var.theta.i
}

alpha <- 0.05
t.i <- sort(t.i)
firstT <- t.i[ceiling(length(t.i) * (1 - alpha / 2))]
secondT <- t.i[ceiling(length(t.i) * (alpha/2))]

lower <- theta - (firstT * var.theta)
upper <- theta - (secondT * var.theta)

Este es un ejemplo de resultado:

Theta:  -0.1748
Confidence Interval: ( -0.2244 ,  0.6153 )

Nota: No tenía un conjunto de datos muy grande, sólo quería ver si funcionaba, tal vez.

Editado de nuevo, para corregir un error con la obtención del $\alpha / 2$ y $1 - \alpha / 2$ percentiles, y cambió los resultados del ejemplo

0 votos

Mi compañero de trabajo lo revisó por mí y cree que esto debería funcionar. Sólo en caso de que alguien más encuentre esto. Voy a tratar de publicar los resultados utilizando la función boot.ci de R y algunos resultados que obtuve con datos reales.

1voto

Nick Spacek Puntos 123
  1. El método que has descrito para calcular los intervalos de confianza de Studentized bootstrap me parece correcto.

  2. Mientras tenga datos de varios loci y los utilice para estimar un valor de $F_{st}$ Si el resultado de la prueba es positivo, la forma de hacerlo es mediante un intervalo de confianza de Studentized bootstrap. El primer artículo que has citado demuestra, mediante estudios de simulación, que el método del percentil-t utilizado en el estimador de múltiples logos de Weir y Cockerham $\hat{\theta}_{loci}$ dará buenos resultados. Por lo tanto, debe sentirse seguro con el uso de ese método.

0 votos

Gracias por leer también el periódico. Me siento más seguro de que esto debería funcionar :)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X