Pengelompokan seri waktu

8

Saya memiliki banyak deret waktu dalam kolom format 1 ini di mana saya memiliki format tanggal (d / m / tahun) dan banyak kolom yang mewakili deret waktu berbeda seperti di sini:

DATE         TS1     TS2     TS3 ...
24/03/2003   0.00    0.00    ...
17/04/2003  -0.05    1.46
11/05/2003   0.46   -3.86
04/06/2003  -2.21   -1.08
28/06/2003  -1.18   -2.16
22/07/2003   0.00    0.23

Dengan R, bagaimana saya bisa mengelompokkan deret waktu yang menunjukkan tren serupa?

daveal81
sumber
3
Dalam aplikasi Anda, apa tren ?
kardinal
4
Setidaknya ada tiga pertanyaan lain yang mencakup topik ini atau yang sangat mirip, stats.stackexchange.com/q/3331/1036 , stats.stackexchange.com/q/2777/1036 , stats.stackexchange.com/q/3238/1036 .
Andy W
tren dalam aplikasi saya adalah sekelompok kurva dalam grafik TS dengan bentuk yang serupa, yaitu sekelompok kurva yang menunjukkan tren musiman, dan tren lain yang menunjukkan tren panjang, ......
daveal81
ya topik ini [tautan] stats.stackexchange.com/questions/3331/... bold code sangat mirip dengan yang ingin saya lakukan
daveal81

Jawaban:

6

Langkah 1

Lakukan transformasi Fourier cepat pada data deret waktu. Ini menguraikan data deret waktu Anda menjadi komponen rata-rata dan frekuensi dan memungkinkan Anda untuk menggunakan variabel untuk pengelompokan yang tidak menunjukkan autokorelasi berat seperti banyak deret waktu mentah.

Langkah 2

Jika deret waktu bernilai nyata, buang bagian kedua dari elemen transformasi Fourier cepat karena mereka berlebihan.

Langkah 3

Pisahkan bagian nyata dan imajiner dari setiap elemen transformasi Fourier yang cepat.

Langkah 4

Lakukan pengelompokan berbasis model pada bagian nyata dan imajiner dari setiap elemen frekuensi.

Langkah 5

Plot persentil dari deret waktu oleh kluster untuk memeriksa bentuknya.

Sebagai alternatif, Anda bisa menghilangkan komponen DC dari transformasi Fourier cepat untuk menghindari cluster Anda yang didasarkan pada rata-rata dan bukannya pada seri yang ditentukan oleh transformasi Fourier, yang mewakili bentuk deret waktu.

Anda juga akan ingin menghitung amplitudo dan sudut fase dari transformasi Fourier cepat sehingga Anda dapat menjelajahi distribusi spektrum deret waktu dalam kluster. Lihat jawaban StackOverflow ini tentang cara melakukannya untuk data bernilai nyata.

Anda juga bisa memetakan persentil bentuk deret waktu dengan klaster dengan menghitung deret Fourier dari amplitudo dan sudut fasa (perkiraan deret waktu yang dihasilkan tidak akan cocok dengan deret waktu asli). Anda juga bisa memetakan persentil dari data deret waktu mentah berdasarkan kluster. Berikut adalah contoh plot seperti itu, yang muncul dari analisis harmonis data NDVI yang baru saja saya lakukan hari ini:

Persentil ke-1, ke-25, ke-50, ke-75, dan ke-99 dari pengukuran NDVI periode-periode oleh kelompok-kelompok yang berasal dari pengelompokan berbasis model menggunakan paket Mclust di R

Akhirnya, jika deret waktu Anda tidak stasioner (yaitu, perubahan mean dan varians dari waktu ke waktu), mungkin lebih tepat untuk menggunakan transformasi wavelet daripada transformasi Fourier. Anda akan melakukannya dengan biaya informasi tentang frekuensi sambil mendapatkan informasi tentang lokasi.

Keseimbangan kurang ajar
sumber
Btw, saya baru saja melakukannya hari ini !!!
Brash Equilibrium
1
apakah Anda dapat memberikan contoh kode untuk melakukan langkah-langkah Anda?
pocketfullofcheese
Hai, @pocketfullofcheese. Saya perlu menemukannya di desktop jauh dari pusat penelitian tempat saya menjadi teman ketika saya melakukan ini. Mungkin butuh sedikit, tapi saya sudah meletakkannya di backlog saya.
Brash Equilibrium
Jika ada yang melihat komentar saya di atas, saya tidak dapat memperoleh akses ke kode itu sebelum saya kehilangan akses ke desktop jarak jauh. Permintaan maaf saya.
Brash Equilibrium