correlation – Bootstrap para probar las diferencias entre los coeficientes de correlación

Pregunta:

Tengo dos coeficientes de correlación ($ r_1 $ y $ r_2 $), obtenidos dentro de la misma muestra (20 sujetos). Mi objetivo es probarlo, son significativamente diferentes. $ r_1 $ es la correlación entre un parámetro neurofisiológico y un parámetro de comportamiento en la condición A; $ r_2 $ es la correlación entre el mismo parámetro neurofisiológico y el mismo parámetro de comportamiento en la condición B.

Estaba pensando en aplicar un procedimiento de arranque para cada condición, con el fin de obtener dos distribuciones de correlaciones. Luego, simplemente puedo ejecutar una prueba t de dos muestras para probar una diferencia significativa.

Mis preguntas:

  1. ¿Este procedimiento parece razonable para lograr mi propósito? (prueba si $ r_1 $ y $ r_2 $ son significativamente diferentes)
  2. ¿Hay alguna forma de decidir el número de iteraciones o es totalmente arbitrario? (por ejemplo, ¿puedo ir con 1000?)

Respuesta:

Creo que en su caso es mejor usar una prueba de permutación en la que calcule una correlación permutada para cada condición y luego tome su diferencia. Por ejemplo, puede concatenar por filas sus dos variables en la condición A y las que están en la condición B, de modo que termine con una matriz (20 * 2 $ \ veces $ 2). Luego, permuta a través de estas 40 filas y obtiene el valor p, como se explica en el siguiente código R:

# fix the # permutations
nperm <- 5000 # needs to be large enough but depends on the samp. size

# set a void vector for the dif of correl.
cor.dif <- rep(NA, nperm)

# simulate some fake data
n1 <- n2 <- 10
x1a <- runif(n1)
x2a <- rnorm(n2)
x1b <- rnorm(n1)
x2b <- runif(n2)

X1 <- cbind(x1a, x2a) # the two measurements in cond. A
X2 <- cbind(x1b, x2b) # the two measurements in cond. B

# concatenate row-wise X1 and X2
X <- rbind(X1, X2) # this is the matrix of 20*2 x 2

# now start permuting
for(i in 1:nperm){

  # sample an index
  idx <- sample(na+nb,na, replace = FALSE)

  # calculate the permuted correlation in the first condition
  cor.1 <- cor(X[idx,1],X[idx,2])

  # calculate the permuted correlation in the second condition
  cor.2 <- cor(X[-ida,1],X[-idx,2])

  # store the dif. of correlations
  cor.dif[i] <- cor.1-cor.2
}

# compute the empirical/actual difference of correlations
emp.cor.dif <- cor(x1a, x2a)-cor(x1a, x2a)

# see at the plot
hist(cor.dif)
abline(v = emp.cor.dif)

# compute the Monte Carlo approximation of the permutation p-value
2*min(mean(cor.dif>emp.cor.dif), mean(cor.dif<emp.cor.dif))

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım