Garis bawah
Koefisien korelasi sampel diperlukan untuk menolak hipotesis bahwa koefisien korelasi benar (Pearson) adalah nol menjadi kecil cukup cepat seiring dengan meningkatnya ukuran sampel. Jadi, secara umum, tidak ada, Anda tidak dapat secara bersamaan memiliki besar (besarnya) koefisien korelasi dan secara bersamaan besar -nilaihal .
Baris Atas (Detail)
Tes yang digunakan untuk koefisien korelasi Pearson dalam fungsi adalah versi yang sangat sedikit dimodifikasi dari metode yang saya bahas di bawah ini.Rcor.test
Misalkan adalah iid bivariat vektor acak normal dengan korelasi . Kami ingin menguji hipotesis nol bahwa versus . Biarkan menjadi koefisien korelasi sampel. Menggunakan teori regresi linier standar, tidak sulit untuk menunjukkan bahwa statistik uji,
memiliki t n - 2 distribusi di bawah hipotesis nol. Untuk yang besarρ ρ = 0 ρ ≠ 0 r T = r √( X1, Y1) , ( X2, Y2) , ... , ( Xn, Yn)ρρ = 0ρ ≠ 0r tn-2T2T2∼F1,n-2χ21
T= r n - 2-----√( 1 - r2)------√
tn - 2,mendekati standar normal. Maka
ntn - 2T2kira-kira chi-squared didistribusikan dengan satu derajat kebebasan. (Berdasarkan asumsi yang kami buat, dalam kenyataannya, tetapi perkiraan membuat lebih jelas apa yang sedang terjadi, saya pikir.)
T2∼ F1 , n - 2χ21
Jadi,
P ( r21 - r2( n - 2 ) ≥ q1 - α) ≈α,
mana adalah kuantil dari distribusi chi-squared dengan satu derajat kebebasan.
q1 - α( 1 - α )
Sekarang, perhatikan bahwa meningkat karena meningkat. Menyusun ulang kuantitas dalam pernyataan probabilitas, kami memiliki itu untuk semua
kita akan mendapatkan penolakan terhadap hipotesis nol pada level . Jelas sisi kanan berkurang dengan .r2/ (1- r2)r2
| r | ≥ 11 + ( n - 2 ) / q1 - α-------------√
αn
Sebuah jalan cerita
Berikut adalah plot wilayah penolakansebagai fungsi dari ukuran sampel. Jadi, misalnya, ketika ukuran sampel melebihi 100, korelasi (absolut) hanya perlu sekitar 0,2 untuk menolak nol pada tingkat .| r |α = 0,05
Simulasi
Kita dapat melakukan simulasi sederhana untuk menghasilkan sepasang vektor mean-nol dengan tepat koefisien korelasi yang . Di bawah ini adalah kode. Dari sini kita bisa melihat output dari cor.test
.
k <- 100
n <- 4*k
# Correlation that gives an approximate p-value of 0.05
# Change 0.05 to some other desired p-value to get a different curve
pval <- 0.05
qval <- qchisq(pval,1,lower.tail=F)
rho <- 1/sqrt(1+(n-2)/qval)
# Zero-mean orthogonal basis vectors
b1 <- rep(c(1,-1),n/2)
b2 <- rep(c(1,1,-1,-1),n/4)
# Construct x and y vectors with mean zero and an empirical
# correlation of *exactly* rho
x <- b1
y <- rho * b1 + sqrt(1-rho^2) * b2
# Do test
ctst <- cor.test(x,y)
Seperti yang diminta dalam komentar, berikut adalah kode untuk mereproduksi plot, yang dapat dijalankan segera setelah kode di atas (dan menggunakan beberapa variabel yang didefinisikan di sana).
png("cortest.png", height=600, width=600)
m <- 3:1000
yy <- 1/sqrt(1+(m-2)/qval)
plot(m, yy, type="l", lwd=3, ylim=c(0,1),
xlab="sample size", ylab="correlation")
polygon( c(m[1],m,rev(m)[1]), c(1,yy,1), col="lightblue2", border=NA)
lines(m,yy,lwd=2)
text(500, 0.5, "p < 0.05", cex=1.5 )
dev.off()