Diberikan serangkaian angka untuk peristiwa X dan Y, hitung koefisien korelasi Pearson. Probabilitas masing-masing peristiwa adalah sama, sehingga nilai yang diharapkan dapat dihitung dengan hanya menjumlahkan setiap seri dan membaginya dengan jumlah percobaan.
Memasukkan
1 6.86
2 5.92
3 6.08
4 8.34
5 8.7
6 8.16
7 8.22
8 7.68
9 12.04
10 8.6
11 10.96
Keluaran
0.769
Kode terpendek menang. Input bisa dengan stdin atau arg. Output akan dengan stdout.
Sunting: Fungsi bawaan tidak boleh diizinkan (yaitu nilai yang diharapkan yang dihitung, varians, penyimpangan, dll) untuk memungkinkan lebih banyak keragaman dalam solusi. Namun, jangan ragu untuk menunjukkan bahasa yang cocok untuk tugas menggunakan builtin (untuk pameran).
Berdasarkan ide David untuk input untuk Mathematica (86 char menggunakan builtin mean)
m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)]
m = Mean;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5
Menyusuri dengan menggunakan mean kami sendiri (101 char)
m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m = Total[#]/Length[#]&;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m=Total@#/Length@#&
Jawaban:
PHP 144 byte
Mengambil input dari STDIN, dalam format yang disediakan di pos asli. Hasil:
Menggunakan produk titik vektor:
di mana vektor input disesuaikan ke bawah oleh dan masing - masing.
Perl 112 byte
Alg yang sama, bahasa yang berbeda. Dalam kedua kasus, baris baru telah ditambahkan untuk 'keterbacaan', dan tidak diperlukan. Satu-satunya perbedaan panjang yang mencolok adalah baris pertama: penguraian input.
sumber
Mathematica 34 byte
Berikut adalah beberapa cara untuk mendapatkan korelasi momen produk Pearson. Mereka semua menghasilkan hasil yang sama. Dari Dr. belisarius: 34 byte
Fungsi Korelasi bawaan I : 15 karakter
Ini mengasumsikan bahwa
x
dany
daftar sesuai dengan masing-masing variabel.Fungsi Korelasi bawaan II : 31 karakter
Ini mengasumsikan d adalah daftar pasangan yang dipesan.
Penggunaan
;;
untukAll
terima kasih kepada A Simmons.Mengandalkan fungsi Deviasi Standar :
118115 karakterKorelasi dapat ditentukan oleh:
Korelasi linting tangan : 119 karakter
Dengan asumsi
x
dany
daftar ...sumber
s
untukSum
./(n-1)
keliru terbawa dari solusi sebelumnya. Sekarang dikoreksi.Q
Dengan asumsi builtin diizinkan dan data x, y adalah vektor yang terpisah (7 karakter):
Jika data disimpan sebagai pasangan pesanan, seperti yang ditunjukkan oleh David Carraher, kami mendapatkan (untuk 12 karakter):
sumber
MATLAB / Oktaf
Untuk tujuan mendemonstrasikan built-in saja:
sumber
APL 57
Menggunakan pendekatan produk titik:
sumber
J,
3027 byteKali ini sebagai fungsi mengambil dua argumen. Menggunakan rumus vektor untuk menghitungnya.
Pemakaian
Penjelasan
Membawa dua daftar a dan b sebagai argumen terpisah.
sumber
x
dany
di baris terakhir dengan menjahitnya bersama,.
untuk memberi Anda((m@:*/@|:-*/@m)%%:@*/@(m@:*:-*:@m))x,.y
+/ .*&(%+/&.:*:)&(-+/%#)
diakui oleh Oleg pada J forum .Python 3, 140 byte
2 fungsi pembantu (
E
danS
, untuk nilai yang diharapkan dan standar deviasi, masing-masing) didefinisikan. Input diharapkan sebagai 2 iterables (daftar, tupel, dll). Cobalah online .sumber
Oracle SQL 11.2, 152 byte (untuk pameran)
Tidak bermain golf
String input harus menggunakan pemisah desimal yang sama dengan database.
sumber
Python 3 dengan SciPy, 52 byte (untuk pameran)
Fungsi anonim yang mengambil input dari dua set data sebagai daftar
x
dany
, dan mengembalikan koefisien korelasi.Bagaimana itu bekerja
Tidak banyak yang terjadi di sini; SciPy memiliki builtin yang mengembalikan baik koefisien dan nilai-p untuk pengujian non-korelasi, sehingga fungsi hanya meneruskan set data ke ini dan mengembalikan elemen pertama dari
(coefficient, p-value)
tuple yang dikembalikan oleh builtin.Cobalah di Ideone
sumber