Jerome Cornfield hat geschrieben:
Eine der schönsten Früchte der Fischerrevolution war die Idee der Randomisierung, und Statistiker, die sich in wenigen anderen Dingen einig sind, haben sich zumindest darauf geeinigt. Trotz dieser Vereinbarung und trotz der weit verbreiteten Verwendung randomisierter Zuordnungsverfahren in klinischen und anderen Formen des Experimentierens ist sein logischer Status, dh die genaue Funktion, die er ausführt, immer noch unklar.
Cornfield, Jerome (1976). "Aktuelle methodische Beiträge zu klinischen Studien" . American Journal of Epidemiology 104 (4): 408–421.
Auf dieser Website und in einer Vielzahl von Literaturstellen sehe ich immer wieder zuversichtliche Behauptungen über die Möglichkeiten der Randomisierung. Starke Begriffe wie "es beseitigt das Problem verwirrender Variablen" sind weit verbreitet. Sehen hier zum Beispiel. Aus praktischen / ethischen Gründen werden jedoch häufig Experimente mit kleinen Proben (3-10 Proben pro Gruppe) durchgeführt. Dies ist in der präklinischen Forschung mit Tieren und Zellkulturen sehr häufig, und die Forscher geben häufig p-Werte an, um ihre Schlussfolgerungen zu stützen.
Ich habe mich gefragt, wie gut Randomisierung ist, um Verwirrungen auszugleichen. Für diese Darstellung habe ich eine Situation modelliert, in der Behandlungs- und Kontrollgruppen mit einer Konfusion verglichen wurden, die zwei Werte mit einer Wahrscheinlichkeit von 50/50 annehmen könnte (z. B. Typ1 / Typ2, männlich / weiblich). Es zeigt die Verteilung von "% unausgeglichen" (Unterschied in der Anzahl von Typ 1 zwischen Behandlungs- und Kontrollproben geteilt durch die Probengröße) für Studien mit einer Vielzahl kleiner Probengrößen. Die roten Linien und die rechten Achsen zeigen das ecdf.
Wahrscheinlichkeit verschiedener Gleichgewichtsgrade unter Randomisierung für kleine Stichprobengrößen:
Zwei Dinge ergeben sich aus dieser Handlung (es sei denn, ich habe irgendwo etwas durcheinander gebracht).
1) Die Wahrscheinlichkeit, genau ausgeglichene Proben zu erhalten, nimmt mit zunehmender Probengröße ab.
2) Die Wahrscheinlichkeit, eine sehr unausgeglichene Probe zu erhalten, nimmt mit zunehmender Probengröße ab.
3) Im Fall von n = 3 für beide Gruppen besteht eine 3% ige Chance, eine völlig unausgeglichene Gruppe von Gruppen zu erhalten (alle Typ1 in der Kontrolle, alle Typ2 in der Behandlung). N = 3 ist für molekularbiologische Experimente üblich (z. B. Messung von mRNA mit PCR oder Proteine mit Western Blot)
Als ich den Fall n = 3 weiter untersuchte, beobachtete ich ein seltsames Verhalten der p-Werte unter diesen Bedingungen. Die linke Seite zeigt die Gesamtverteilung der p-Werte, die unter Verwendung von t-Tests unter Bedingungen unterschiedlicher Mittelwerte für die Untergruppe Typ 2 berechnet wurden. Der Mittelwert für Typ 1 war 0 und sd = 1 für beide Gruppen. Die rechten Felder zeigen die entsprechenden falsch positiven Raten für nominelle "Signifikanzgrenzwerte" von 0,05 bis 0001.
Verteilung der p-Werte für n = 3 mit zwei Untergruppen und unterschiedlichen Mitteln der zweiten Untergruppe im Vergleich über den t-Test (10000 Monte-Carlo-Läufe):
Hier sind die Ergebnisse für n = 4 für beide Gruppen:
Für n = 5 für beide Gruppen:
Für n = 10 für beide Gruppen:
Wie aus den obigen Diagrammen ersichtlich ist, scheint es eine Wechselwirkung zwischen Stichprobengröße und Unterschied zwischen Untergruppen zu geben, die zu einer Vielzahl von p-Wert-Verteilungen unter der Nullhypothese führt, die nicht einheitlich sind.
Können wir daraus schließen, dass p-Werte für richtig randomisierte und kontrollierte Experimente mit kleiner Stichprobengröße nicht zuverlässig sind?
R-Code für das erste Diagramm
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)
}
R-Code für die Diagramme 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()