¿Cómo probar si la varianza explicada por el primer factor de PCA difiere entre las condiciones de medidas repetidas?

8

Contexto:

Tengo un estudio donde se miden seis variables numéricas en cada una de las dos condiciones experimentales de medidas repetidas (n = 200). Llamemos a las condiciones y y las variables y . Teóricamente, espero que en la condición se explique más la variación en las variables por el primer factor de un análisis de componentes principales (PCA).ABA1,A2,...,A6B1,B2,...,B6B

Los valores típicos serían:

  • Primer factor de PCA en representa el 30% de la varianzaA1,...,A6
  • Primer factor de PCA en representa el 40% de la varianza.B1,...,B6

Preguntas:

  • ¿Cómo puedo probar si esta diferencia es estadísticamente significativa?
  • ¿Cómo podría implementarse esto en R?
Jeromy Anglim
fuente

Respuestas:

1

Solo una idea (tal vez tonta). Guarde la variable de puntaje del primer componente principal para la condición A (PC1A) y la variable de puntaje del primer componente principal para la condición B (PC1B). Las puntuaciones deben ser "en bruto", es decir, sus variaciones o suma de cuadrados iguales a sus valores propios. Luego use la prueba de Pitman para comparar las variaciones.

ttnphns
fuente
1

¿Recibí tu respuesta correcta? - ¿Quiere probar si existe una diferencia estadísticamente significativa entre las dos condiciones?

Perhabs vegan :: adonis () es algo para ti? No sé si eso es lo que estás buscando.

Funciona en la matriz de distancias y compara distancias dentro de una condición que son más grandes que entre condiciones. Por ejemplo, en una NMDS, vería una clara separación de las dos condiciones.

Aquí hay un código de ejemplo:

df <- data.frame(cond = rep(c("A", "B"), each = 100), 
 v1 <- jitter(rep(c(20, 100), each = 100)),
 v2 <- jitter(rep(c(0, 80), each = 100)),
 v3 <- jitter(rep(c(40, 5), each = 100)),
 v4 <- jitter(rep(c(42, 47), each = 100)),
 v5 <- jitter(rep(c(78, 100), each = 100)),
 v6 <- jitter(rep(c(10, 100), each = 100)))

# PCA
require(vegan)
pca <- rda(df[ ,-1], scale = TRUE)
ssc <- scores(pca, display = "sites")
ordiplot(pca, type = "n")
points(ssc[df$cond == "A", ], col = "red", pch = 16)
points(ssc[df$cond == "B", ], col = "blue", pch = 16)

# NMDS
nmds <- metaMDS(df[ ,-1], distance = "euclidian")
nmsc <- scores(nmds, display = "sites")
ordiplot(nmds, type = "n")
points(nmsc[df$cond == "A", ], col = "red", pch = 16)
points(nmsc[df$cond == "B", ], col = "blue", pch = 16)

# use adonis to test if there is a difference between the conditions
adonis(df[ ,-1] ~ df[ ,1], method = "euclidean")
## There is a statistically significant difference between the two conditions
EDi
fuente
Esto es bastante críptico. ¿Podrías elaborar un poco?
whuber
@whuber: editado un poco. El artículo de Anderson mencionado en las referencias de adonis es bastante legible.
EDi
1
Le agradezco su esfuerzo. Todavía estoy confundido porque algunas de las frases parecen inconsistentes (el "no" parece particularmente fuera de lugar) y gran parte de la respuesta no tiene una conexión clara con la pregunta: ¿cómo se relaciona la "matriz de distancia" con la matriz de covarianza? de PCA? ¿"NMDS" se refiere a MDS no métrico? De ser así, ¿qué tiene que ver eso con PCA? Parece que estás tomando un enfoque completamente diferente. Esto está bien, pero ayudaría a explicar de dónde vienes y por qué es aplicable.
whuber
1

Prueba de permutación

Para probar la hipótesis nula directamente, use una prueba de permutación.

Deje que la primera PC en la condición explique de varianza, y la primera PC en la condición explique de varianza. Su hipótesis es que , por lo que podemos definir como la estadística de interés, y la hipótesis es que . La hipótesis nula a rechazar es que .Aa<100%Bb<100%b>ac=bac>0c=0

Para realizar la prueba de permutación, tome su muestras de ambas condiciones, y ellos dividido aleatoriamente en condiciones y . Como la división es aleatoria, no debería haber diferencia en la varianza explicada después de eso. Para cada permutación, puede calcular , repetir este proceso muchas (por ejemplo, ) veces y obtener la distribución de bajo la hipótesis nula de . La comparación de su valor empírico de con esta distribución producirá un valor .N=200+200ABc10000cctrue=0cp

Bootstrapping

Para obtener el intervalo de confianza en , use bootstrapping.c

En el enfoque de bootstrapping, se selecciona al azar muestras con el reemplazo de las muestras existentes en y otro de . Calcule y repítalo muchas veces (nuevamente, digamos, ) veces. Obtendrá una distribución de arranque de los valores de , y sus intervalos de percentiles se corresponderán con los intervalos de confianza del valor empírico . Por lo tanto, puede estimar el valor observando qué parte de esta distribución se encuentra por encima de .N=200AN=200Bc10000ccp0

La prueba de permutación es una forma más directa (y probablemente menos dependiente de cualquier suposición) para probar la hipótesis nula, pero el arranque tiene un beneficio adicional de producir un intervalo de confianza en .c

ameba
fuente
La prueba de permutación parece una forma razonable de probar la hipótesis nula. Probablemente, mi opción predeterminada sería probar un enfoque de arranque en lugar de probar con reemplazo. Creo que el beneficio de un enfoque de arranque sería que también obtendría un intervalo de confianza sobre el tamaño de la diferencia entre las dos variaciones. Mi sensación es que no lo conseguirías con el enfoque de permutación.
Jeromy Anglim
@ Jeromy, tienes toda la razón sobre el intervalo de confianza en la diferencia. De hecho, tuve la parte de arranque escrita en mi respuesta todo este tiempo, hasta que la edité ayer cuando revisé este hilo. Como lo mencionó ahora, he devuelto el bootstrapping ahora mismo (y también formateé un poco la respuesta). Echar un vistazo.
ameba
0

Esto es solo un esbozo de idea. La proporción de varianza se define como

λ1λ1+...+λ6,

donde son los valores propios de la matriz de covarianza. Ahora, si usamos los valores propios de la matriz de correlación, entonces , dado que la suma de los valores propios de una matriz es igual a la traza de la matriz, y para las matrices de correlación, la traza es la suma de unos. .λiλ1+...+λ6=6

Entonces, si usamos las matrices de correlación, necesitamos probar hipótesis sobre la diferencia de dos valores propios máximos de las matrices de correlación de muestra. Es ciertamente posible encontrar en la literatura la distribución asintótica del valor propio máximo de la matriz de correlación. Entonces, el problema se reduce a algún tipo de prueba t emparejada o no emparejada.

mpiktas
fuente
1
Sospecho (en base a poca información ;-) que la distribución asintótica se alcanzaría bastante lentamente para muchas distribuciones de datos subyacentes. Más importante aún, la correlación simplemente no es la covarianza; PCA en los dos puede diferir radicalmente, especialmente cuando difieren las variaciones de las variables.
whuber