Jika Anda telah mengerjakan tugas deret waktu mana pun, saya yakin pada satu titik Anda melihat pendekatan untuk mengidentifikasi sifat hubungan dalam deret waktu — ukuran autokorelasi. Misalnya, Anda mungkin menggunakan plot ACF dan PACF untuk menentukan urutan model ARMA Show
Namun, pernahkah Anda bertanya-tanya bagaimana cara menghitung koefisien korelasi tersebut? . Kami akan menjelaskan secara singkat apa kedua ukuran itu dan kemudian menunjukkan langkah demi langkah cara menghitungnya dengan Python Dan untuk mengelola ekspektasi — kita akan fokus pada perhitungan di balik koefisien, bukan interpretasinya dan detail tentang cara menggunakannya untuk pemodelan deret waktu. Itu akan menjadi topik untuk artikel lain MempersiapkanSeperti biasa, kami dengan cepat mengimpor perpustakaan yang diperlukan. Kami akan menggunakan fungsi dari Untuk artikel ini, kami akan menggunakan kumpulan data klasik untuk deret waktu — kumpulan data penumpang maskapai. Anda dapat menemukan kumpulan data di perpustakaan array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 0), atau unduh versi yang sedikit diproses sebelumnya dari GitHub saya. Untuk perhitungan kami, kami akan menggunakan array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 1 Seri yang disebut array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 2, yang berisi jumlah bulanan penumpang maskapai penerbanganGambar oleh penulisSaya cukup yakin Anda sudah cukup familiar dengan plot di atas. ) Kemudian, kami membuat dua plot yang berisi nilai ACF/PACF. Meskipun kami tidak akan mereplikasi plot secara eksplisit (meskipun kami bisa), kami fokus pada nilai yang diwakili oleh titik (dan garis vertikal) pada plot Catatan. Meskipun kami tidak akan membahasnya secara eksplisit dalam artikel ini, area yang diarsir biru adalah selang kepercayaan. Nilai ACF/PACF yang berada di dalam interval tidak dianggap signifikan secara statistik pada level 5% (pengaturan default, yang dapat kita ubah) AutokorelasiMari kita mulai dengan yang lebih sederhana dari keduanya. Singkatnya, autokorelasi adalah korelasi deret waktu dengan pasangannya yang tertinggal. Contoh paling sederhana — lag 1 — akan memberi tahu kami seberapa berkorelasi jumlah penumpang maskapai penerbangan bulan ini dengan jumlah bulan sebelumnya. Secara alami, kita dapat mengubah kalimat itu dengan jumlah kelambatan yang berubah-ubah Setelah rekap yang sangat singkat ini, mari kita hitung tolok ukur menggunakan acf(df, nlags=10) Yang menghasilkan array berikut array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) Kita tahu bahwa autokorelasi adalah korelasi deret waktu dengan nilai laggednya. Jadi untuk perhitungan kami, kami dapat dengan mudah membuat DataFrame dengan seri asli dan tertinggal di kolom terpisah dan kemudian menggunakan metode array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 4 untuk menghitung koefisien korelasi Pearson. Mari kita cobaKami mulai dengan membuat DataFrame Yang menghasilkan tabel berikut Gambar oleh penulisKolom array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 5 adalah seri asli dan semua yang lain digeser dengan tepat. Kemudian, kami menghitung matriks korelasi dan mencetak kolom untuk seri asli — ini menunjukkan bagaimana seri asli berkorelasi dengan semua kolom DataFrameacf_df.corr()["y_lag_0"].values Yang mengembalikan array berikut array([1. , 0.96019465, 0.89567531, 0.83739477, 0.7977347 , 0.78594315, 0.7839188 , 0.78459213, 0.79221505, 0.8278519 , 0.8827128 ]) _Ada yang salah dan nilainya tidak sesuai dengan tolok ukur kami. Dan apa yang bisa menjadi alasan untuk itu? . Mari kita lihat rumus autokorelasi Sumber. Peramalan. Prinsip dan Praktek Edisi ke-3Ada beberapa hal yang menjadi perhatian kita di sini
Sekarang mari kita hitung nilai ACF menggunakan rumus di atas Yang mengembalikan array berikut array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) Ini sangat cocok untuk apa yang kami hitung menggunakan fungsi array([1. , 0.94804734, 0.87557484, 0.80668116, 0.75262542, 0.71376997, 0.6817336 , 0.66290439, 0.65561048, 0.67094833, 0.70271992]) 7 dari statsmodels Di samping catatan, rumusnya mungkin berasal dari buku terbaik tentang peramalan deret waktu — Peramalan. Prinsip dan Praktek. Saya sangat merekomendasikannya kepada siapa pun yang tertarik dengan topik ini. Anda dapat membaca opini/review saya di sini Buku terbaik untuk mulai belajar tentang peramalan deret waktuDan untuk membuatnya lebih baik — gratismenuju ilmu data. com Autokorelasi ParsialAutokorelasi parsial sedikit lebih sulit untuk dipahami. Sekali lagi, ini menggambarkan hubungan antara deret waktu dan rekan-rekannya yang tertinggal, namun, kali ini menghilangkan semua efek perantara. Kita dapat menggunakan autokorelasi parsial untuk menentukan, misalnya, bagaimana hubungan jumlah penumpang bulan ini dengan jumlah 6 bulan yang lalu. Dalam contoh ini, saat menghitung PACF, kami akan menghapus informasi tentang bagaimana nilai dari 6 bulan lalu memengaruhi nilai 5 bulan lalu, lalu efek antara lag ke-5 dan ke-4, dan seterusnya hingga bulan terakhir. Ini juga berarti bahwa autokorelasi parsial pertama sama dengan autokorelasi pertama, karena tidak ada efek perantara yang harus dihilangkan. Agar lebih menarik, ada cukup banyak pendekatan untuk menghitung autokorelasi parsial. Fungsi dalam Pada artikel ini, kami fokus pada pendekatan OLS, yang didasarkan pada model autoregressive (AR). Rincian algoritma dijelaskan di bawah ini Pertama, kami membuat matriks (atau DataFrame) dari nilai yang tertinggal hingga yang ke-N. Pada titik ini, kami tidak menghapus pengamatan apa pun, meskipun secara teknis tidak tersedia (karena cara pembuatan kelambatan). Kemudian, untuk setiap iterasi (dilambangkan dengan k) antara 2 dan N
Gagasan di balik pendekatan ini adalah bahwa varian yang dijelaskan oleh titik waktu antara dapat dikeluarkan dari koefisien lag k-th. Di bawah ini kami jelaskan perbedaan antara kedua metode OLS yang tersedia di
Oke, teknisnya sudah cukup, mari kita hitung autokorelasi parsial untuk deret waktu penumpang maskapai. Seperti sebelumnya, kita mulai dengan membuat tolok ukur menggunakan fungsi acf_df.corr()["y_lag_0"].values 2 dari statsmodels pacf(df, nlags=10, method="ols") Yang menghasilkan array berikut array([ 1. , 0.95893198, -0.32983096, 0.2018249 , 0.14500798, 0.25848232, -0.02690283, 0.20433019, 0.15607896, 0.56860841, 0.29256358]) Kemudian, kami menghitung koefisien autokorelasi parsial menggunakan langkah-langkah yang dijelaskan di atas Kode harus cukup jelas, mengingat ini hampir merupakan terjemahan literal dari langkah-langkah tertulis ke dalam kode Python. Satu-satunya hal yang mungkin baru adalah fungsi acf_df.corr()["y_lag_0"].values 4 dari statsmodels . Alih-alih membuat seri lagged secara manual — seperti yang telah kita lakukan sebelumnya dalam contoh ACF — kita dapat menggunakan fungsi praktis ini. Ini memiliki beberapa fitur yang mudah digunakan, misalnya, memungkinkan kita untuk secara otomatis menghapus beberapa pengamatan pertama yang berisi nilai tidak valid. Untuk informasi lebih lanjut, silakan lihat dokumentasiKode kami menghasilkan koefisien autokorelasi parsial berikut, yang sama dengan yang kami buat sebelumnya dengan fungsi acf_df.corr()["y_lag_0"].values 2array([ 1. , 0.95893198, -0.32983096, 0.2018249 , 0.14500798, 0.25848232, -0.02690283, 0.20433019, 0.15607896, 0.56860841, 0.29256358]) Catatan. Pada artikel ini, Anda dapat menemukan pengantar langkah demi langkah ke metode lain untuk menghitung koefisien autokorelasi parsial, kali ini berdasarkan korelasi residu. Takeaway
Anda dapat menemukan kode yang digunakan untuk artikel ini di GitHub saya. Juga, setiap umpan balik yang konstruktif dipersilakan. Anda dapat menghubungi saya di Twitter atau di komentar Suka artikelnya? . Jika Anda menggunakan tautan ini untuk menjadi anggota, Anda akan mendukung saya tanpa biaya tambahan. Terima kasih sebelumnya dan sampai jumpa Bagaimana Anda menghitung korelasi otomatis dengan Python?Gunakan panda. corr() pada kerangka data baru untuk menghitung matriks korelasi .
Bagaimana autokorelasi dihitung?Jumlah autokorelasi yang dihitung adalah sama dengan panjang efektif deret waktu dibagi 2 , di mana panjang efektif deret waktu . Jumlah autokorelasi yang dihitung berkisar antara minimal 2 dan maksimal 400.
Bagaimana cara menghitung autokorelasi di numpy?Artinya, autokorelasi dapat dihitung dengan cara berikut. . kurangi rata-rata dari sinyal dan dapatkan sinyal yang tidak bias menghitung transformasi Fourier dari sinyal yang tidak bias menghitung kerapatan spektral daya dari sinyal, dengan mengambil norma kuadrat dari setiap nilai transformasi Fourier dari sinyal yang tidak bias Bagaimana Anda menginterpretasikan plot autokorelasi dengan Python?Jika nilai autokorelasi mendekati 0, maka nilai antara pengamatan berurutan tidak berkorelasi satu sama lain . Sebaliknya, nilai autokorelasi yang mendekati 1 atau -1 menunjukkan bahwa terdapat korelasi positif atau negatif yang kuat antara pengamatan yang berurutan. |