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.

Fabian Stolz
sumber

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.

gui11aume
sumber
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-μ)),
μ
Néstor
sumber
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)

Michael R. Chernick
sumber
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