Pertimbangkan vektor 1-dimensi, bernilai riil x yang mewakili pengamatan beberapa proses yang diukur pada interval dengan jarak yang sama dari waktu ke waktu. Kita sebut x a time series .
Misalkan n menunjukkan panjang x dan x̄ menunjukkan rata-rata aritmatika dari x . The sampel autokovarian fungsi didefinisikan sebagai
untuk semua - n < h < n . Ini mengukur ketergantungan linear antara dua titik pada seri yang sama yang diamati pada waktu yang berbeda.
The sampel autokorelasi fungsi , atau ACF, didefinisikan sebagai
Ini mengukur prediktabilitas linear dari seri x pada waktu t , yang kita nyatakan x t , hanya menggunakan nilai x t + h .
Perhatikan bahwa taksiran sampel ini tidak cocok dengan perhitungan naif berdasarkan pada properti teoretis. Artinya, fungsi autokorelasi sampel tidak sama dengan Pearson koefisien korelasi dari x dengan h -Langkah tertinggal dari x .
Tugas
Mengingat array x dan bilangan bulat positif h , mencetak atau mengembalikan pertama h 1 lag autocorrelations dari x , dimulai dengan lag 0. autocorrelations lag adalah mereka sesuai dengan input negatif dalam rumus di atas.
Anda dapat mengasumsikan bahwa 0 < h < n , di mana n adalah panjang x , dan 2 < n <256.
Output harus benar dalam 1E-4. Tidak ada batasan dalam penggunaan fungsi bawaan atau waktu berjalan.
Contohnya
h, x -> output
--------------
5, [2.4, 2.4, 2.4, 2.2, 2.1, 1.5, 2.3, 2.3, 2.5, 2] -> [1.00000000, 0.07659298, -0.06007802, -0.51144343, -0.02912874, -0.10468140]
1, [2134, 1863, 1877, 1877, 1492, 1249] -> [1.0000000, 0.3343041]
2, [13067.3, 13130.5, 13198.4] -> [1.0000000000, -0.0002854906, -0.4997145094]
sumber
Python 3,
147130126120 byteSolusi ini mungkin akan golf lebih lanjut, Ini baru permulaan.
Anda dapat menyebutnya dengan:
sumber
MATL , 20 byte
EDIT (20 Mei 2016): pada versi 18.0.0 bahasa, gunakan
Y+
sebagai gantiX+
. Tautan ini menyertakan perubahan ini.Cobalah online!
Korelasi terkait erat dengan konvolusi. Kami menormalkan dengan mengurangi rata-rata, kemudian berbelit-belit, menormalkan kembali dengan membagi dengan nilai maksimum, dan kemudian memilih jeda yang diinginkan.
sumber
Mathematica, 27 byte
Terima kasih kepada LegionMammal978 untuk menghemat 1 byte.
Kita bisa mengalahkan Jelly jika nama fungsi tidak terlalu panjang.
Kasus cobaan
sumber
#2~CorrelationFunction~{#}&
.Oktaf,
4737 bytesumber
disp
, karena Anda kembali ke output fungsi)disp
.