Deteksi bentuk untuk data deret waktu

8

Saya memiliki banyak koleksi rangkaian waktu - pengukuran dilakukan setiap 15 menit (96 pengukuran dalam sehari) selama rentang 1 tahun di berbagai lokasi berbeda.

Saya telah membagi setiap deret waktu menjadi 365 deret waktu lebih kecil, 1 untuk setiap hari dalam setahun. Melihat deret waktu ini, pasti ada banyak bentuk berbeda untuk satu hari. Beberapa terlihat sinusoidal, beberapa konstan, beberapa terlihat seperti proses stokastik acak, beberapa terlihat parabola, dan beberapa terlihat seperti U's.

Yang ingin saya lakukan adalah menggunakan algoritma yang dapat menemukan bentuk umum ini. Saya berpikir tentang pengelompokan, dan menggunakan centroid kluster untuk menentukan bentuk umum, tetapi ingin memeriksa dengan komunitas apakah ini benar. Sejauh ini, saya telah melihat Dynamic Time Warp sebagai metrik, tetapi sepertinya metrik itu membutuhkan banyak perhitungan. Saya juga menemukan

http://mox.polimi.it/it/progetti/pubblicazioni/quaderni/13-2008.pdf dari SE.

Saya juga melihat apakah mungkin untuk melakukan pengelompokan seri-waktu berdasarkan bentuk kurva? tetapi pertanyaan ini berasal dari 2010 dan mungkin sudah usang.

Gagasan lain yang saya miliki adalah mengambil komposisi eigend dari matriks yang diformat sebagai:

Matriks adalah matriks dari semua deret waktu yang diamati pada hari . Setiap baris matriks adalah deret waktu dengan panjang 96. Kemudian, saya akan melakukan 365 komposisi eigend, dan menggunakan vektor eigen sebagai bentuk umum. Apakah ini masuk akal?MiiMi

Terima kasih!

JCWong
sumber

Jawaban:

7

Saya tidak akan terlalu jauh ke dalam pengelompokan seri waktu berdasarkan analisis kurva yang kompleks, karena Anda mungkin memiliki banyak suara di data Anda dan Anda mungkin akan mendapatkan kluster yang aneh (tidak berarti).

Saya pikir cara yang lebih mudah adalah menemukan pola utama data Anda, yang kemungkinan besar akan didasarkan pada tren dan musiman (hari dalam seminggu, akhir pekan, hari libur ...). Anda dapat menemukannya dengan memplot beberapa statistik dari setiap hari (berarti, tren pagi, tren malam ...) dengan waktu (hari dalam setahun, hari dalam seminggu, hari dalam bulan ...) pada sumbu x. Ini akan memberi Anda garis dasar data Anda, dan karenanya kelompok dasar Anda.

Misalnya dalam R, jika Anda memiliki tanggal di kolom 1, dan rata-rata di kolom 2, Anda dapat dengan mudah menggambar garis dasar pola hari kerja dengan:

data[,3] <- as.factor(weekdays(data[,1]))
plot(data[,3],data[,2],main='mean by Day of Week')

Langkah selanjutnya adalah mengidentifikasi outlier Anda dan memeriksa apakah Anda dapat menemukan pola di sana.

Jika Anda lebih suka bekerja dalam urutan terbalik; menjalankan analisis otomatis seperti yang Anda sarankan atau Time-Series yang disetel sebagai LB_Keogh atau kml , ini OK. Tetapi Anda perlu kembali ke interpretasi yang bermakna dari temuan dengan logika di atas.

Orang
sumber