Jerome Cornfield ha escrito:
Uno de los mejores frutos de la revolución de los pescadores fue la idea de la aleatorización, y los estadísticos que están de acuerdo en algunas otras cosas al menos han estado de acuerdo en esto. Pero a pesar de este acuerdo y del uso generalizado de los procedimientos de asignación aleatoria en la experimentación clínica y en otras formas de experimentación, su estado lógico, es decir, la función exacta que realiza, aún es oscuro.
Campo de maíz, Jerome (1976). "Contribuciones metodológicas recientes a los ensayos clínicos" . American Journal of Epidemiology 104 (4): 408-421.
A lo largo de este sitio y en una variedad de literatura, constantemente veo afirmaciones confiables sobre los poderes de la aleatorización. Una terminología sólida como " elimina el problema de las variables de confusión" es común. Ver aquí , por ejemplo. Sin embargo, muchas veces los experimentos se realizan con muestras pequeñas (3-10 muestras por grupo) por razones prácticas / éticas. Esto es muy común en la investigación preclínica con animales y cultivos celulares y los investigadores comúnmente informan los valores de p en apoyo de sus conclusiones.
Esto me hizo preguntarme, ¿qué tan buena es la aleatorización para equilibrar los factores de confusión? Para esta gráfica, modelé una situación que compara los grupos de tratamiento y control con una confusión que podría tomar dos valores con una probabilidad de 50/50 (por ejemplo, tipo1 / tipo2, hombre / mujer). Muestra la distribución de "% no balanceado" (Diferencia en # de tipo1 entre las muestras de tratamiento y control divididas por el tamaño de la muestra) para estudios de una variedad de tamaños de muestra pequeños. Las líneas rojas y los ejes del lado derecho muestran el ecdf.
Probabilidad de varios grados de equilibrio bajo aleatorización para tamaños de muestra pequeños:
Hay dos cosas claras de esta trama (a menos que me equivoque en alguna parte).
1) La probabilidad de obtener muestras exactamente equilibradas disminuye a medida que aumenta el tamaño de la muestra.
2) La probabilidad de obtener una muestra muy desequilibrada disminuye a medida que aumenta el tamaño de la muestra.
3) En el caso de n = 3 para ambos grupos, hay un 3% de posibilidades de obtener un conjunto de grupos completamente desequilibrado (todos tipo 1 en el control, todos tipo 2 en el tratamiento). N = 3 es común para experimentos de biología molecular (p. Ej., Medir ARNm con PCR o proteínas con transferencia Western)
Cuando examiné más el caso n = 3, observé un comportamiento extraño de los valores de p en estas condiciones. El lado izquierdo muestra la distribución general de los valores de cálculo calculados usando pruebas t en condiciones de diferentes medios para el subgrupo tipo2. La media para el tipo 1 fue 0 y sd = 1 para ambos grupos. Los paneles de la derecha muestran las tasas de falsos positivos correspondientes para "cortes de significancia" nominales de .05 a.0001.
Distribución de los valores p para n = 3 con dos subgrupos y diferentes medias del segundo subgrupo en comparación con la prueba t (10000 carreras de monte carlo):
Aquí están los resultados para n = 4 para ambos grupos:
Para n = 5 para ambos grupos:
Para n = 10 para ambos grupos:
Como se puede ver en los gráficos anteriores, parece haber una interacción entre el tamaño de la muestra y la diferencia entre los subgrupos que resulta en una variedad de distribuciones de valores p bajo la hipótesis nula que no son uniformes.
Entonces, ¿podemos concluir que los valores de p no son confiables para los experimentos controlados y aleatorizados adecuadamente con un tamaño de muestra pequeño?
Código R para la primera parcela
require(gtools)
#pdf("sim.pdf")
par(mfrow=c(4,2))
for(n in c(3,4,5,6,7,8,9,10)){
#n<-3
p<-permutations(2, n, repeats.allowed=T)
#a<-p[-which(duplicated(rowSums(p))==T),]
#b<-p[-which(duplicated(rowSums(p))==T),]
a<-p
b<-p
cnts=matrix(nrow=nrow(a))
for(i in 1:nrow(a)){
cnts[i]<-length(which(a[i,]==1))
}
d=matrix(nrow=nrow(cnts)^2)
c<-1
for(j in 1:nrow(cnts)){
for(i in 1:nrow(cnts)){
d[c]<-cnts[j]-cnts[i]
c<-c+1
}
}
d<-100*abs(d)/n
perc<-round(100*length(which(d<=50))/length(d),2)
hist(d, freq=F, col="Grey", breaks=seq(0,100,by=1), xlab="% Unbalanced",
ylim=c(0,.4), main=c(paste("n=",n))
)
axis(side=4, at=seq(0,.4,by=.4*.25),labels=seq(0,1,,by=.25), pos=101)
segments(0,seq(0,.4,by=.1),100,seq(0,.4,by=.1))
lines(seq(1,100,by=1),.4*cumsum(hist(d, plot=F, breaks=seq(0,100,by=1))$density),
col="Red", lwd=2)
}
Código R para parcelas 2-5
for(samp.size in c(6,8,10,20)){
dev.new()
par(mfrow=c(4,2))
for(mean2 in c(2,3,10,100)){
p.out=matrix(nrow=10000)
for(i in 1:10000){
d=NULL
#samp.size<-20
for(n in 1:samp.size){
s<-rbinom(1,1,.5)
if(s==1){
d<-rbind(d,rnorm(1,0,1))
}else{
d<-rbind(d,rnorm(1,mean2,1))
}
}
p<-t.test(d[1:(samp.size/2)],d[(1+ samp.size/2):samp.size], var.equal=T)$p.value
p.out[i]<-p
}
hist(p.out, main=c(paste("Sample Size=",samp.size/2),
paste( "% <0.05 =", round(100*length(which(p.out<0.05))/length(p.out),2)),
paste("Mean2=",mean2)
), breaks=seq(0,1,by=.05), col="Grey", freq=F
)
out=NULL
alpha<-.05
while(alpha >.0001){
out<-rbind(out,cbind(alpha,length(which(p.out<alpha))/length(p.out)))
alpha<-alpha-.0001
}
par(mar=c(5.1,4.1,1.1,2.1))
plot(out, ylim=c(0,max(.05,out[,2])),
xlab="Nominal alpha", ylab="False Postive Rate"
)
par(mar=c(5.1,4.1,4.1,2.1))
}
}
#dev.off()