7 votos

Comprobar si el tiempo de máximo difiere entre los dos grupos

Supongamos que tengo 10 medidas repetidas de una variable cuantitativa $X$ de los individuos dentro de dos grupos (llamémoslos A y B). Para cada grupo, tengo las medias estimadas de la variable $X$ en los 10 puntos de tiempo, es decir, $$\hat{\mu}_1^A, \hat{\mu}_2^A, \ldots, \hat{\mu}_{10}^A$$ y $$\hat{\mu}_1^B, \hat{\mu}_2^B, \ldots, \hat{\mu}_{10}^B,$$ y el correspondiente $10 \times 10$ matrices de varianza-covarianza de estas estimaciones.

Pruebas de $$H_0: \mu_t^A = \mu_t^B$$ (para $t = 1, \ldots, 10$ ) puede realizarse fácilmente mediante pruebas de tipo Wald (con una corrección adecuada para pruebas múltiples) con: $$z = \frac{\hat{\mu}_t^A - \hat{\mu}_t^B}{\sqrt{Var(\hat{\mu}_t^A) + Var(\hat{\mu}_t^B)}}.$$

Ahora quiero probar si el punto de tiempo del máximo dentro de cada grupo difiere entre los dos grupos. Supongo que la hipótesis nula podría escribirse como $$H_0: t = t' \; \text{for} \max({\mu}_t^A) \; \text{and} \max({\mu}_{t'}^B).$$ ¿Cuál sería la forma de comprobarlo?

EDITAR : Algún código R para simular datos con los que jugar.

library(MASS)

### number of individuals in the two groups
n1 <- 50
n2 <- 50

### assume a flat trajectory with a single peak at times 4 and 6 in the respective groups
mu1 <- rep(0,10)
mu2 <- rep(0,10)
mu1[4] <- 1
mu2[6] <- 1

### make the raw data autocorrelated with an AR1 structure
V1 <- 5 * toeplitz(ARMAacf(ar=.7, lag.max=9))
V2 <- 5 * toeplitz(ARMAacf(ar=.7, lag.max=9))

### simulate raw data
X1 <- mvrnorm(n1, mu1, V1)
X2 <- mvrnorm(n2, mu2, V2)

### observed means over time in each group
m1 <- apply(X1, 2, mean)
m2 <- apply(X2, 2, mean)

### find time of the maximum mean in each group
tmax1 <- which(m1 == max(m1))
tmax2 <- which(m2 == max(m2))

### plot means over time in each group
plot(1:10, m1,  type="o", pch=19, ylim=range(c(m1,m2)), col="red", xlab="Time", ylab="Mean")
lines(1:10, m2, type="o", pch=19, ylim=range(c(m1,m2)), col="blue")
points(tmax1, max(m1), pch=19, cex=2, col="red")
points(tmax2, max(m2), pch=19, cex=2, col="blue")

Y un ejemplo del aspecto de la trama resultante.

figure of means over time in two groups

2voto

icelava Puntos 548

Bueno, no estoy del todo seguro de haber encontrado un responder ... pero mi idea no cabe en un comentario. Así que voy a publicar y ver lo que la gente más inteligente aquí apuntan.

Como he comentado anteriormente, yo haría un bootstrap del tiempo máximo dentro de cada grupo, pero estratificado por individuo - por remuestreo filas de X1 y X2 :

library(boot)
b1 <- boot(X1,statistic=function(X,index)which.max(apply(X[index,],2,mean)),10000)
b2 <- boot(X2,statistic=function(X,index)which.max(apply(X[index,],2,mean)),10000)

A continuación, podemos observar la distribución de las diferencias en los máximos de los bootstrap:

foo <- b1$t-b2$t
ecdf(foo)(0)
hist(foo,breaks=seq(-10.5,10.5))

histogram

Ahora bien, la ecdf a cero nos dice que el 96,89% de las diferencias son menores que cero, lo que en algunos círculos sería suficiente para afirmar $p<0.05$ y darlo por terminado ;-) Sin embargo, yo realmente no entiendo de dónde vienen los dos picos en el histograma. ¿Alguien tiene una idea?

(Pregunta divertida, de todos modos...)


EDIT: sólo por diversión, aquí está el otro enfoque que podría tomarse razonablemente - tabular los tiempos máximos de cada individuo por grupo y realizar un $\chi^2$ prueba:

incidence <- cbind(
    table(factor(apply(X1,1,which.max),levels=1:10)),
    table(factor(apply(X2,1,which.max),levels=1:10)))
chisq.test(incidence)

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