Membuat nilai acak berkorelasi otomatis di R


11

Kami mencoba membuat nilai acak berkorelasi otomatis yang akan digunakan sebagai rentang waktu. Kami tidak memiliki data yang ada yang kami rujuk dan hanya ingin membuat vektor dari awal.

Di satu sisi kita tentu saja perlu proses acak dengan distribusi dan SD-nya.

Di sisi lain autokorelasi yang memengaruhi proses acak harus dijelaskan. Nilai-nilai vektor secara otomatis berkorelasi dengan penurunan kekuatan selama beberapa label waktu. misalnya lag1 memiliki 0,5, lag2 0,3, lag1 0,1 dll.

Jadi pada akhirnya vektor akan terlihat seperti: 2, 4, 7, 11, 10, 8, 5, 4, 2, -1, 2, 5, 9, 12, 13, 10, 8, 4, 3, 1, -2, -5

dan seterusnya.

Jawaban:


11

Saya sebenarnya sering mengalami masalah itu. Dua cara favorit saya untuk menghasilkan deret waktu dengan korelasi-otomatis dalam R bergantung pada apakah saya ingin proses stasioner atau tidak.

Untuk deret waktu non stasioner saya menggunakan gerakan Brown. Misalnya, untuk panjang 1000 saya lakukan:

x <- diffinv(rnorm(999))

Untuk deret waktu stasioner, saya memfilter derau Gaussian. Misalnya ini terlihat seperti:

x <- filter(rnorm(1000), filter=rep(1,3), circular=TRUE)

Dalam hal itu, korelasi otomatis pada lag adalah 0 jika τ > 2 . Dalam kasus lain, kita harus menghitung korelasi antara jumlah variabel. Misalnya untuk τ = 1 , kovarians adalahττ>2τ=1

CHaiv(X1;X2)=CHaiv(Y1+Y2+Y3;Y2+Y3+Y4)=VSebuahr(Y2)+VSebuahr(Y3)=2.

Jadi, Anda melihat bahwa kovarians otomatis turun secara linear hingga mana n adalah panjang filter.nn

Anda juga bisa ingin melakukan deret waktu memori yang panjang (seperti gerak Brown fraksional), tetapi ini lebih melibatkan. Saya memiliki implementasi R dari metode Davies-Harte yang dapat saya kirimkan kepada Anda jika Anda mau.


Untuk mendapatkan seri waktu memori panjang, saya akan merekomendasikan buku Wornell 1996 (tautan: books.google.cl/books/about/… ), :-). Meskipun penelusuran proses memori yang panjang itu tidak mudah, Anda masih bisa melakukannya.
Néstor

Saya menggunakan pendekatan Anda dan itu bekerja secara umum, tetapi saya mendapatkan sedikit penyimpangan antara fungsi target yang digunakan dalam filter dan fungsi autokorelasi yang dihasilkan. Silakan lihat pertanyaan ini: stats.stackexchange.com/questions/176722/…
nnn

7

R(τ)τ

Σ=[R(0)R(1)...R(N)R(1)R(0)...R(N-1)...R(N)R(N-1)...R(0)]

Σ

f(x)=1(2π)N/2|Σ|1/2exp(-12(x-μ)TΣ-1(x-μ)),
μ

5

X(t)=SebuahX(t-1)+e(t)e(0)X(0)=e(0)X(1)=SebuahX(0)+e(1)e(saya)X(saya)e(saya)e(saya)


4
Mungkin ada baiknya menunjukkan keberadaan arima.sim()fungsi di sini.
Tanda

Yakin mereka yang sekarang R harus membuat saran untuk implementasi di R seperti OP ingin tahu.
Michael R. Chernick
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.