Jerome Cornfield telah menulis:
Salah satu buah terbaik dari revolusi Nelayan adalah gagasan pengacakan, dan ahli statistik yang menyetujui beberapa hal lain setidaknya telah menyetujui hal ini. Namun terlepas dari kesepakatan ini dan meskipun penggunaan prosedur alokasi acak yang meluas secara klinis dan dalam bentuk eksperimen lainnya, status logisnya, yaitu, fungsi tepatnya yang dijalankannya, masih belum jelas.
Cornfield, Jerome (1976). "Kontribusi Metodologis Terbaru untuk Uji Klinis" . American Journal of Epidemiology 104 (4): 408–421.
Sepanjang situs ini dan dalam berbagai literatur saya secara konsisten melihat klaim percaya diri tentang kekuatan pengacakan. Terminologi yang kuat seperti "itu menghilangkan masalah variabel perancu" adalah umum. Lihat di sini , misalnya. Namun, banyak kali percobaan dijalankan dengan sampel kecil (3-10 sampel per kelompok) karena alasan praktis / etis. Ini sangat umum dalam penelitian praklinis menggunakan hewan dan kultur sel dan para peneliti umumnya melaporkan nilai p dalam mendukung kesimpulan mereka.
Ini membuat saya bertanya-tanya, seberapa bagus pengacakan pada keseimbangan. Untuk plot ini saya memodelkan situasi yang membandingkan kelompok perlakuan dan kelompok kontrol dengan satu pembaur yang dapat mengambil dua nilai dengan peluang 50/50 (misalnya type1 / type2, pria / wanita). Ini menunjukkan distribusi "% Tidak Seimbang" (Perbedaan # type1 antara sampel perlakuan dan kontrol dibagi dengan ukuran sampel) untuk studi berbagai ukuran sampel kecil. Garis merah dan sumbu sisi kanan menunjukkan ecdf.
Probabilitas berbagai tingkat keseimbangan dalam pengacakan untuk ukuran sampel kecil:
Dua hal yang jelas dari plot ini (kecuali saya mengacaukan suatu tempat).
1) Peluang mendapatkan sampel yang persis seimbang berkurang karena ukuran sampel meningkat.
2) Probabilitas mendapatkan sampel yang sangat tidak seimbang berkurang dengan meningkatnya ukuran sampel.
3) Dalam kasus n = 3 untuk kedua kelompok, ada peluang 3% untuk mendapatkan kelompok kelompok yang sama sekali tidak seimbang (semua tipe1 dalam kontrol, semua tipe2 dalam pengobatan). N = 3 adalah umum untuk percobaan biologi molekuler (misalnya mengukur mRNA dengan PCR, atau protein dengan western blot)
Ketika saya memeriksa kasus n = 3 lebih lanjut, saya mengamati perilaku aneh dari nilai p dalam kondisi ini. Sisi kiri menunjukkan distribusi keseluruhan nilai-nilai yang dihitung menggunakan uji-t dalam kondisi sarana yang berbeda untuk subkelompok type2. Mean untuk type1 adalah 0, dan sd = 1 untuk kedua grup. Panel kanan menunjukkan tingkat positif palsu yang sesuai untuk "cutoff signifikansi" nominal dari 0,05 hingga,0001.
Distribusi nilai-p untuk n = 3 dengan dua subkelompok dan cara yang berbeda dari subkelompok kedua bila dibandingkan melalui uji t (10000 berjalan monte carlo):
Ini adalah hasil untuk n = 4 untuk kedua grup:
Untuk n = 5 untuk kedua grup:
Untuk n = 10 untuk kedua grup:
Seperti dapat dilihat dari grafik di atas tampaknya ada interaksi antara ukuran sampel dan perbedaan antara subkelompok yang menghasilkan berbagai distribusi nilai-p di bawah hipotesis nol yang tidak seragam.
Jadi dapatkah kita menyimpulkan bahwa nilai-p tidak dapat diandalkan untuk eksperimen acak dan terkontrol dengan baik dengan ukuran sampel yang kecil?
Kode R untuk plot pertama
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)
}
Kode R untuk plot 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()