Jerome Cornfield şunu yazdı:
Balıkçı devriminin en iyi meyvelerinden biri, rasgeleleştirme fikriydi ve birkaç başka şey üzerinde anlaşan istatistikçiler en azından bu konuda anlaştılar. Ancak bu anlaşmaya ve klinik ve diğer deney şekillerinde randomize tahsis prosedürlerinin yaygın olarak kullanılmasına rağmen, mantıksal durumu, yani tam olarak yerine getirdiği işlev hala belirsizdir.
Cornfield, Jerome (1976). "Klinik Araştırmalara Son Metodolojik Katkılar" . Amerikan Epidemiyoloji Dergisi 104 (4): 408-421.
Bu site boyunca ve çeşitli literatürde sürekli olarak randomizasyonun güçleri hakkında emin iddialar görüyorum. " Karıştırıcı değişkenler sorununu ortadan kaldırır " gibi güçlü terminoloji yaygındır. Örneğin buraya bakınız . Bununla birlikte, birçok kez deneyler pratik / etik nedenlerle küçük örneklerle (grup başına 3-10 örnek) gerçekleştirilir. Bu, hayvanlar ve hücre kültürlerini kullanan klinik öncesi araştırmalarda çok yaygındır ve araştırmacılar genellikle sonuçlarını desteklemek için p değerlerini rapor ederler.
Bu beni şaşırttı, karışıklıkları dengelemede randomizasyonun ne kadar iyi olduğunu. Bu grafik için tedavi ve kontrol gruplarını 50/50 şanslı iki değer alabilen bir kafa karıştırıcıyla karşılaştıran bir durum modellenmiştim (örneğin, tip1 / tip2, erkek / kadın). Çeşitli küçük numune boyutlarında yapılan çalışmalar için "% Dengesiz" (tip1'in muamele ve kontrol numuneleri arasındaki numunenin numune boyutuna bölünmesi arasındaki fark) dağılımını gösterir. Kırmızı çizgiler ve sağ eksenler ecdf'i gösterir.
Küçük numune boyutları için randomizasyon altında çeşitli denge derecelerinin olasılığı:
İki şey bu arsa açıktır (bir yerde berbat sürece).
1) Numune boyutu arttıkça tam olarak dengeli numune alma olasılığı azalır.
2) Dengesiz bir numune alma olasılığı, numune boyutu arttıkça azalır.
3) Her iki grup için n = 3 olması durumunda, tamamen dengesiz gruplara sahip olma şansı% 3'tür (kontrolde tüm tip1, tedavide tüm tip2). N = 3 moleküler biyoloji deneyleri için yaygındır (örn. PCR ile mRNA'yı veya western blotlu proteinleri ölçmek)
N = 3 vakasını daha fazla incelediğimde, bu koşullar altında p değerlerinin garip davranışını gözlemledim. Sol taraf, tip2 alt grubu için farklı araçların koşulları altında t-testleri kullanılarak hesaplanan değerlerin genel dağılımını gösterir. Tip1 için ortalama 0 ve her iki grup için sd = 1 idi. Sağ paneller .05 ile.0001 arasındaki nominal "anlamlılık kesintileri" için karşılık gelen yanlış pozitif oranları gösterir.
N = 3 için p-değerinin t testi (10000 monte carlo koşusu) ile karşılaştırıldığında iki alt grup ve ikinci alt grubun farklı araçları ile dağılımı:
Her iki grup için n = 4 için sonuçlar:
Her iki grup için n = 5 için:
Her iki grup için n = 10 için:
Yukarıdaki grafiklerden de görülebileceği gibi, örnek büyüklüğü ile alt gruplar arasındaki fark arasında, null hipotezi altında tekdüze olmayan çeşitli p-değeri dağılımları ile sonuçlanan bir etkileşim olduğu görülmektedir.
Öyleyse, p-değerlerinin küçük örneklem büyüklüğü ile uygun şekilde randomize ve kontrollü deneyler için güvenilir olmadığı sonucuna varabilir miyiz?
İlk çizim için R kodu
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)
}
2-5 parseller için R kodu
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()