Bagaimana mengukur kelancaran deret waktu dalam R?

25

Apakah ada cara yang baik untuk mengukur kehalusan deret waktu dalam R? Sebagai contoh,

-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0

jauh lebih lancar daripada

-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0

meskipun mereka memiliki mean dan standar deviasi yang sama. Akan sangat keren jika ada fungsi untuk memberi saya skor yang lancar dari serangkaian waktu.

agmao
sumber
4
Kelancaran memiliki makna yang jelas dalam teori proses stokastik. ("Sebuah variogram adalah deskripsi statistik, berbasis kasar, kuantitatif dari kekasaran permukaan": goldensoftware.com/variogramTutorial.pdf , hal 16.) Kelancaran berkaitan dengan ekstrapolasi variogram ke jarak nol. (SD perbedaan berurutan dan autokorelasi lag-one adalah versi cepat dan kotor ini). Informasi penting terkandung dalam koefisien deret Taylor pada 0. Misalnya, konstanta bukan nol memang kasar; nol orde tinggi pada 0 menunjukkan seri yang sangat halus.
whuber
Saya pernah mendengar tentang eksponen hurst juga.
Taylor
Betapa lucu, saya sendiri sudah bertanya-tanya hal yang sama persis ini. Terima kasih untuk posting!
Chris Beeley
@whuber: itu jawaban, bukan komentar.
naught101
@ naught101 Saya dengan rendah hati memohon untuk berbeda: komentar saya sesuai dengan situasi terkait dan hanya merujuk pada proses teoretis yang digunakan untuk memodelkan data spasial, bukan pada bagaimana seseorang akan memperkirakan kelancaran itu. Ada seni untuk estimasi yang saya kenal dalam berbagai dimensi, tetapi tidak dalam satu, yang khusus (karena arah panah waktu), jadi saya ragu untuk mengklaim bahwa menerapkan prosedur multidimensi ke deret waktu sama sekali pendekatan konvensional atau bahkan yang baik.
whuber

Jawaban:

22

Standar deviasi dari perbedaan akan memberi Anda perkiraan kelancaran kasar:

x <- c(-1, -0.8, -0.6, -0.4, -0.2, 0, 0.2, 0.4, 0.6, 0.8, 1.0)
y <- c(-1, 0.8, -0.6, 0.4, -0.2, 0, 0.2, -0.4, 0.6, -0.8, 1.0)
sd(diff(x))
sd(diff(y))

Pembaruan: Seperti yang ditunjukkan Cyan, itu memberi Anda ukuran yang bergantung pada skala. Ukuran skala independen yang serupa akan menggunakan koefisien variasi daripada standar deviasi:

sd(diff(x))/abs(mean(diff(x)))
sd(diff(y))/abs(mean(diff(y)))

Dalam kedua kasus, nilai kecil sesuai dengan seri yang lebih halus.

Rob Hyndman
sumber
1
Skor itu tidak berskala-invarian, yang mungkin atau mungkin tidak masuk akal tergantung pada aplikasi. (Dan saran saya sendiri adalah skala-invarian, jadi kekhawatiran yang sama berlaku untuk itu.) Juga, ada baiknya menunjukkan bahwa untuk skor di atas, nilai yang lebih kecil menunjukkan deret waktu yang lebih halus.
Cyan
1
Terima kasih @Cyan. Sekarang saya telah menambahkan versi skala-independen.
Rob Hyndman
2
Apakah Anda benar-benar berniat untuk memasukkan diffdalam penyebut? Nilai-nilai akan berkurang secara aljabar (x[n]-x[1])/(n-1)yang merupakan ukuran (kasar) tren dan seharusnya, dalam banyak kasus, menjadi sangat mendekati nol, menghasilkan statistik yang tidak stabil dan tidak terlalu bermakna. Saya bingung dengan hal itu, tetapi mungkin saya mengabaikan sesuatu yang jelas ...
whuber
1
Dulu saya diffmenghindari asumsi stasioneritas. Jika itu didefinisikan dengan penyebut abs(mean(x))maka penskalaan hanya akan bekerja ketika xstasioner. Mengambil diff berarti itu akan bekerja untuk proses stasioner perbedaan juga. Tentu saja, diffs mungkin tidak membuat xstasioner dan kemudian masih ada masalah. Scaling time series rumit karena alasan ini. Tapi saya ambil poin Anda tentang stabilitas. Saya pikir untuk melakukan sesuatu yang lebih baik akan membutuhkan sesuatu yang jauh lebih canggih --- menggunakan nonparametric yang lebih halus misalnya.
Rob Hyndman
1
Saya akan berpikir tren konstan harus sangat mulus, jadi jawabannya harus 0.
Rob Hyndman
13

Autokorelasi lag-satu akan berfungsi sebagai skor dan memiliki interpretasi statistik yang cukup mudah juga.

cor(x[-length(x)],x[-1])

Interpretasi skor:

  • skor di dekat 1 menyiratkan seri bervariasi halus
  • skor mendekati 0 menyiratkan bahwa tidak ada hubungan linear keseluruhan antara titik data dan yang berikut (yaitu, plot (x [-length (x)], x [-1]) tidak akan memberikan sebar plot dengan linearitas apa pun yang tampak jelas)
  • skor mendekati -1 menunjukkan bahwa seri ini bergerigi dengan cara tertentu: jika satu titik di atas rata-rata, yang berikutnya kemungkinan berada di bawah rata-rata dengan jumlah yang sama, dan sebaliknya.
Cyan
sumber
0

Anda bisa saja memeriksa korelasinya dengan nomor timestep. Itu akan sama dengan mengambil R² dari regresi linier sederhana pada deret waktu. Namun, perhatikan bahwa itu adalah dua rentang waktu yang sangat berbeda, jadi saya tidak tahu seberapa baik itu berfungsi sebagai perbandingan.

tidak ada apa-apa101
sumber
4
Itu akan menjadi ukuran linearitas dengan waktu, tetapi bukan dari kelancaran.
Rob Hyndman