Koefisien korelasi biasa (dalam 2d) mengukur seberapa baik sekumpulan poin dapat digambarkan oleh suatu garis, dan jika ya, tandanya memberi tahu kita apakah kita memiliki korelasi positif atau negatif. Tetapi ini mengasumsikan bahwa koordinat titik sebenarnya dapat ditafsirkan secara kuantitatif misalnya sebagai pengukuran.
Jika Anda tidak bisa melakukan itu tetapi Anda masih bisa memesan koordinat, ada koefisien korelasi peringkat : Ini mengukur seberapa baik poin dapat dijelaskan oleh fungsi monoton .
Tantangan
Diberikan daftar poin 2d, tentukan koefisien korelasi peringkat mereka .
Detail
- Anda dapat menganggap input sebagai bilangan bulat positif (tetapi Anda tidak harus), atau nilai "sortable" lainnya.
- Poin dapat diambil sebagai daftar poin, atau dua daftar untuk koordinat x dan y atau matriks atau array 2d dll.
- Output harus berupa floating point atau tipe rasional, karena harus mewakili bilangan real antara 0 dan 1.
Definisi
Rangking: Diberikan daftar angka X=[x(1),...,x(n)]
kita dapat menetapkan angka positif yang rx(i)
disebut peringkat untuk setiap entri x(i)
. Kami melakukannya dengan mengurutkan daftar dan menetapkan indeks x(i)
dalam daftar yang diurutkan rx(i)
. Jika dua atau lebih x(i)
memiliki nilai yang sama, maka kami hanya menggunakan rata-rata aritmatika dari semua indeks yang sesuai sebagai peringkat. Contoh:
List: [21, 10, 10, 25, 3]
Indices sorted: [4, 2, 3, 5, 1]
Angka 10
muncul dua kali di sini. Dalam daftar yang disortir itu akan menempati indeks 2
dan 3
. Rata-rata aritmatika dari mereka 2.5
begitu peringkatnya
Ranks: [4, 2.5, 2.5, 5, 1]
Peringkat Koefisien Korelasi : Let [(x(1),y(1)),(x(2),y(2)),...,(x(n),y(n))]
menjadi poin yang diberikan di mana masing-masing x(i)
dan y(i)
adalah bilangan real Untuk setiap (wlog Anda dapat menganggap itu adalah bilangan bulat.) i=1,...,n
Kita menghitung pangkat rx(i)
dan ry(i)
dari x(i)
dan y(i)
masing-masing.
Biarkan d(i) = rx(i)-ry(i)
menjadi perbedaan pangkat dan biarkan S
menjadi jumlah S = d(1)^2 + d(2)^2 + ... + d(n)^2
. Kemudian koefisien korelasi pangkat rho
diberikan oleh
rho = 1 - 6 * S / (n * (n^2-1))
Contoh
x y rx ry d d^2
21 15 4 5 -1 1
10 6 2&3 -> 2.5 2 0.5 0.25
10 7 2&3 -> 2.5 3 -0.5 0.25
25 11 5 4 1 1
3 5 1 1 0 0
rho = 1 - 6 * (1+0.25+0.25+1)/(5*(5^2-1)) = 0.875
sumber
2.5
.Jawaban:
MATL , 33 byte
Cobalah online!
Penjelasan
sumber
R ,
6460 byteCobalah online!
rank
di R adalah builtin yang menghitung peringkat yang diinginkan; sisanya hanya matematika untuk melakukan sisa pekerjaan.Terima kasih kepada CriminallyVulgar karena telah menyimpan 4 byte
Seperti disebutkan dalam komentar , definisi koefisien korelasi peringkat yang disebutkan tidak sesuai dengan koefisien korelasi Spearman, jika tidak, jawaban yang valid adalah 26 byte:
sumber
Python 3 , 141 byte
Ini mendefinisikan fungsi anonim yang mengambil input sebagai dua daftar yang sesuai dengan
x
dany
nilai. Output dikembalikan sebagai nilai floating-point.Cobalah online!
sumber
Mathematica, 89 byte
Cobalah online! (untuk mengerjakan matematika, "Tr" diganti dengan "Total")
sumber
Bahasa Wolfram (Mathematica) , 18 byte
Cobalah online!
sumber