βα dan terkait. Saya akan mencoba mengilustrasikan poin dengan tes diagnostik. Katakanlah Anda memiliki tes diagnostik yang mengukur tingkat penanda darah. Diketahui bahwa orang yang memiliki penyakit tertentu memiliki kadar penanda ini lebih rendah dibandingkan dengan orang sehat. Segera jelas bahwa Anda harus memutuskan nilai cutoff, di mana seseorang diklasifikasikan sebagai "sakit" sedangkan orang-orang dengan nilai di atas cutoff ini dianggap sehat. Namun, sangat mungkin bahwa distribusi penanda darah sangat bervariasi bahkan di antara orang yang sakit dan sehat. Beberapa orang sehat mungkin memiliki kadar penanda darah yang sangat rendah, meskipun mereka sangat sehat.β
Ada empat kemungkinan yang dapat terjadi:
- orang sakit diidentifikasi dengan benar sebagai orang sakit (true positive = TP)
- orang sakit secara palsu diklasifikasikan sebagai sehat (false negative = FN)
- orang sehat diidentifikasi dengan benar sebagai sehat (true negative = TN)
- orang yang sehat secara palsu diklasifikasikan sebagai sakit (false positive = FP)
Kemungkinan ini dapat diilustrasikan dengan tabel 2x2 :
Sick Healthy
Test positive TP FP
Test negative FN TN
α = F P / ( F P + T N ) β β = F N / ( T P + F N )α menunjukkan tingkat positif palsu, yaitu . adalah tingkat negatif palsu, yaitu . Saya menulis sebuah skrip sederhana untuk menggambarkan situasi secara grafis.α = FP/ (FP+ TN)ββ= FN/ (TP+ FN)R
alphabeta <- function(mean.sick=100, sd.sick=10, mean.healthy=130, sd.healthy=10, cutoff=120, n=10000, side="below", do.plot=TRUE) {
popsick <- rnorm(n, mean=mean.sick, sd=sd.sick)
pophealthy <- rnorm(n, mean=mean.healthy, sd=sd.healthy)
if ( side == "below" ) {
truepos <- length(popsick[popsick <= cutoff])
falsepos <- length(pophealthy[pophealthy <= cutoff])
trueneg <- length(pophealthy[pophealthy > cutoff])
falseneg <- length(popsick[popsick > cutoff])
} else if ( side == "above" ) {
truepos <- length(popsick[popsick >= cutoff])
falsepos <- length(pophealthy[pophealthy >= cutoff])
trueneg <- length(pophealthy[pophealthy < cutoff])
falseneg <- length(popsick[popsick < cutoff])
}
twotable <- matrix(c(truepos, falsepos, falseneg, trueneg), 2, 2, byrow=T)
rownames(twotable) <- c("Test positive", "Test negative")
colnames(twotable) <- c("Sick", "Healthy")
spec <- twotable[2,2]/(twotable[2,2] + twotable[1,2])
alpha <- 1 - spec
sens <- pow <- twotable[1,1]/(twotable[1,1] + twotable[2,1])
beta <- 1 - sens
pos.pred <- twotable[1,1]/(twotable[1,1] + twotable[1,2])
neg.pred <- twotable[2,2]/(twotable[2,2] + twotable[2,1])
if ( do.plot == TRUE ) {
dsick <- density(popsick)
dhealthy <- density(pophealthy)
par(mar=c(5.5, 4, 0.5, 0.5))
plot(range(c(dsick$x, dhealthy$x)), range(c(c(dsick$y, dhealthy$y))), type = "n", xlab="", ylab="", axes=FALSE)
box()
axis(1, at=mean(pophealthy), lab=substitute(mu[H[0]]~paste("=",m, sep=""), list(m=mean.healthy)), cex.axis=1.5,tck=0.02)
axis(1, at=mean(popsick), lab=substitute(mu[H[1]]~paste("=",m, sep=""), list(m=mean.sick)), cex.axis=1.5, tck=0.02)
axis(1, at=cutoff, lab=substitute(italic(paste("Cutoff=",coff, sep="")), list(coff=cutoff)), pos=-0.004, tick=FALSE, cex.axis=1.25)
lines(dhealthy, col = "steelblue", lwd=2)
if ( side == "below" ) {
polygon(c(cutoff, dhealthy$x[dhealthy$x<=cutoff], cutoff), c(0, dhealthy$y[dhealthy$x<=cutoff],0), col = "grey65")
} else if ( side == "above" ) {
polygon(c(cutoff, dhealthy$x[dhealthy$x>=cutoff], cutoff), c(0, dhealthy$y[dhealthy$x>=cutoff],0), col = "grey65")
}
lines(dsick, col = "red", lwd=2)
if ( side == "below" ) {
polygon(c(cutoff,dsick$x[dsick$x>cutoff],cutoff),c(0,dsick$y[dsick$x>cutoff],0) , col="grey90")
} else if ( side == "above" ) {
polygon(c(cutoff,dsick$x[dsick$x<=cutoff],cutoff),c(0,dsick$y[dsick$x<=cutoff],0) , col="grey90")
}
legend("topleft",
legend=(c(as.expression(substitute(alpha~paste("=", a), list(a=round(alpha,3)))),
as.expression(substitute(beta~paste("=", b), list(b=round(beta,3)))))), fill=c("grey65", "grey90"), cex=1.2, bty="n")
abline(v=mean(popsick), lty=3)
abline(v=mean(pophealthy), lty=3)
abline(v=cutoff, lty=1, lwd=1.5)
abline(h=0)
}
#list(specificity=spec, sensitivity=sens, alpha=alpha, beta=beta, power=pow, positiv.predictive=pos.pred, negative.predictive=neg.pred)
c(alpha, beta)
}
Mari kita lihat sebuah contoh. Kami berasumsi bahwa tingkat rata-rata penanda darah di antara orang yang sakit adalah 100 dengan deviasi standar 10. Di antara orang sehat, tingkat darah rata-rata adalah 140 dengan deviasi standar 15. Dokter menetapkan cutoff pada 120.
alphabeta(mean.sick=100, sd.sick=10, mean.healthy=140, sd.healthy=15, cutoff=120, n=100000, do.plot=TRUE, side="below")
Sick Healthy
Test positive 9764 901
Test negative 236 9099
Anda melihat bahwa daerah yang diarsir dalam hubungan satu sama lain. Dalam hal ini, dan . Tetapi apa yang terjadi jika dokter menetapkan cutoff berbeda? Mari kita atur sedikit lebih rendah, ke 105 dan lihat apa yang terjadi.β = 236 / ( 236 + 9764 ) ≈ 0,024α = 901 / ( 901 + 9099 ) ≈ 0,09β= 236 / ( 236 + 9764 ) ≈ 0,024
Sick Healthy
Test positive 6909 90
Test negative 3091 9910
kami sangat rendah sekarang karena hampir tidak ada orang sehat yang didiagnosis sakit. Tetapi telah meningkat, karena orang sakit dengan tingkat penanda darah tinggi sekarang secara palsu diklasifikasikan sebagai sehat.βαβ
Akhirnya, mari kita lihat bagaimana dan berubah untuk cutoff yang berbeda:βαβ
cutoffs <- seq(0, 200, by=0.1)
cutoff.grid <- expand.grid(cutoffs)
plot.frame <- apply(cutoff.grid, MARGIN=1, FUN=alphabeta, mean.sick=100, sd.sick=10, mean.healthy=140, sd.healthy=15, n=100000, do.plot=FALSE, side="below")
plot(plot.frame[1,]~cutoffs, type="l", las=1, xlab="Cutoff value", ylab="Alpha/Beta", lwd=2, cex.axis=1.5, cex.lab=1.2)
lines(plot.frame[2,]~cutoffs, col="steelblue", lty=2, lwd=2)
legend("topleft", legend=c(expression(alpha), expression(beta)), lwd=c(2,2),lty=c(1,2), col=c("black", "steelblue"), bty="n", cex=1.2)
Anda dapat segera melihat bahwa rasio dan tidak konstan. Yang juga sangat penting adalah ukuran efek. Dalam hal ini, ini akan menjadi perbedaan rata-rata kadar penanda darah di antara orang yang sakit dan sehat. Semakin besar perbedaannya, semakin mudah kedua kelompok dapat dipisahkan oleh cutoff:βαβ
Di sini kita memiliki tes "sempurna" dalam arti bahwa batas 150 membedakan orang sakit dari yang sehat.
Penyesuaian Bonferroni
Penyesuaian Bonferroni mengurangi kesalahan tetapi mengembang kesalahan tipe II ( ) . Ini berarti bahwa kesalahan dalam membuat keputusan negatif palsu meningkat sementara positif palsu diminimalkan. Itu sebabnya penyesuaian Bonferroni sering disebut konservatif. Pada grafik di atas, perhatikan bagaimana meningkat ketika kami menurunkan cutoff dari 120 menjadi 105: meningkat dari menjadi . Pada saat yang sama, menurun dari menjadi .β β 0,02 0,31αββ0.020.310,09 0,01α0.090.01
Untuk orang lain di masa depan:
Dalam estimasi Ukuran Sampel, Ztotal dihitung dengan menambahkan Z yang sesuai dengan alpha dan Z yang sesuai dengan daya (1-beta). Jadi secara matematis, jika ukuran sampel dijaga konstan, meningkatkan Z untuk alpha berarti Anda mengurangi Z untuk daya dengan jumlah yang SAMA misalnya, meningkatkan Zalpha dari 0,05 menjadi 0,1 mengurangi Zpower sebesar 0,05.
Perbedaannya adalah Z untuk alpha adalah dua sisi sedangkan Z untuk beta adalah 1-tailed. Jadi, sementara nilai Z berubah dengan jumlah yang sama, tetapi probabilitas% yang sesuai dengan nilai Z ini tidak berubah dengan jumlah yang sama.
Contoh:
5% alpha (kepercayaan 95%) dengan daya 80% (20% beta) memberikan ukuran sampel yang sama dengan
20% alfa (kepercayaan 80%) dengan kekuatan 93,6% (6,4% beta) daripada kekuatan 95% yang akan kita miliki jika hubungannya adalah 1: 1.
sumber
Tidak ada hubungan umum antara alfa dan beta.
Itu semua tergantung pada tes Anda, ambil contoh sederhana:
(Wikipedia)
Dalam penggunaan sehari-hari tipe I kesalahan dapat dianggap sebagai "menghukum orang yang tidak bersalah" dan kesalahan tipe II "membiarkan orang yang bersalah dibebaskan".
Juri bisa parah: tidak ada kesalahan tipe II, beberapa tipe I Juri bisa menjadi "baik": tidak ada tipe I tetapi beberapa tipe II Juri bisa normal: beberapa tipe I dan beberapa tipe II Juri bisa sempurna: tidak ada kesalahan
Dalam praktiknya ada dua efek antagonis:
Ketika kualitas tes naik, kesalahan tipe I dan tipe II menurun hingga titik tertentu. Ketika juri membaik, ia cenderung memberikan penilaian yang lebih baik atas orang yang tidak bersalah dan yang bersalah.
Setelah beberapa titik masalah yang mendasarinya muncul dalam membangun tes. Tipe I atau II lebih penting bagi orang yang menjalankan tes. Dengan contoh juri, kesalahan tipe I lebih penting sehingga proses hukum dibuat untuk menghindari tipe I. Jika ada keraguan orang tersebut bebas. Secara intuitif ini menyebabkan pertumbuhan kesalahan tipe II.
Tentang Bonferroni:
(Wikipedia lagi)
Koreksi Bonferroni hanya mengontrol kemungkinan positif palsu. Koreksi biasanya datang dengan biaya meningkatkan kemungkinan menghasilkan negatif palsu, dan akibatnya mengurangi kekuatan statistik. Saat menguji sejumlah besar hipotesis, ini dapat menghasilkan nilai kritis yang besar.
sumber