Autokorelasi dari proses independen AR (1)

8

Membiarkan {Xt} menjadi proses stokastik yang dibentuk dengan menggabungkan iid draw dari proses AR (1), di mana setiap draw adalah vektor dengan panjang 10. Dengan kata lain, {X1,X2,,X10} adalah realisasi dari proses AR (1); {X11,X12,,X20}diambil dari proses yang sama, tetapi independen dari 10 pengamatan pertama; dan lain-lain.

Apa yang akan ACF dari X - sebut saja ρ(l)-- terlihat seperti? Saya mengharapkanρ(l) menjadi nol untuk kelambatan panjang l10 karena, dengan asumsi, setiap blok pengamatan 10 independen dari semua blok lainnya.

Namun, ketika saya mensimulasikan data, saya mendapatkan ini:

simulate_ar1 <- function(n, burn_in=NA) {
    return(as.vector(arima.sim(list(ar=0.9), n, n.start=burn_in)))
}

simulate_sequence_of_independent_ar1 <- function(k, n, burn_in=NA) {
    return(c(replicate(k, simulate_ar1(n, burn_in), simplify=FALSE), recursive=TRUE))
}

set.seed(987)
x <- simulate_sequence_of_independent_ar1(1000, 10)
png("concatenated_ar1.png")
acf(x, lag.max=100)  # Significant autocorrelations beyond lag 10 -- why?
dev.off()

fungsi autokorelasi sampel untuk x

Mengapa ada autokorelasi sejauh ini dari nol setelah lag 10?

Dugaan awal saya adalah bahwa burn-in di arima.sim terlalu pendek, tapi saya mendapatkan pola yang sama ketika saya secara eksplisit mengatur misal burn_in = 500.

Apa yang saya lewatkan?


Sunting : Mungkin fokus pada menggabungkan AR (1) s adalah pengalih perhatian - contoh yang lebih sederhana adalah ini:

set.seed(9123)
n_obs <- 10000
x <- arima.sim(model=list(ar=0.9), n_obs, n.start=500)
png("ar1.png")
acf(x, lag.max=100)
dev.off()

ACF dari vanilla polos ar1

Saya terkejut dengan blok besar autokorelasi signifikan bukan pada kelambatan yang panjang (di mana ACF benar ρ(l)=0.9lpada dasarnya nol). Haruskah aku


Sunting lain : mungkin semua yang terjadi di sini adalah ituρ^, perkiraan ACF, itu sendiri sangat berkorelasi. Sebagai contoh, inilah distribusi gabungan dari(ρ^(60),ρ^(61)), yang nilainya sebenarnya pada dasarnya nol (0.9600):

## Look at joint sampling distribution of (acf(60), acf(61)) estimated from AR(1)
get_estimated_acf <- function(lags, n_obs=10000) {
    stopifnot(all(lags >= 1) && all(lags <= 100))
    x <- arima.sim(model=list(ar=0.9), n_obs, n.start=500)
    return(acf(x, lag.max=100, plot=FALSE)$acf[lags + 1])
}
lags <- c(60, 61)
acf_replications <- t(replicate(1000, get_estimated_acf(lags)))
colnames(acf_replications) <- sprintf("acf_%s", lags)
colMeans(acf_replications)  # Essentially zero
plot(acf_replications)
abline(h=0, v=0, lty=2)

distribusi sampling dari estimasi acf

Adrian
sumber
1
Saya harap jawaban saya masih berguna bagi Anda, lebih dari 1,5 tahun kemudian. Setidaknya itu membantu saya meningkatkan keterampilan R saya.
Candamir

Jawaban:

3

Ringkasan eksekutif: Tampaknya Anda salah mengira kebisingan untuk autokorelasi sejati karena ukuran sampel yang kecil.

Anda cukup mengkonfirmasi ini dengan meningkatkan kparameter dalam kode Anda. Lihat contoh-contoh di bawah ini (Saya telah menggunakan yang sama set.seed(987)untuk mempertahankan replikasi):

k = 1000 (kode asli Anda)

1000 simulasi

k = 2000

2000 simulasi

k = 5000

5000 simulasi

k = 10000

10.000 simulasi

k = 50000

50.000 simulasi

Urutan gambar ini memberi tahu kita dua hal:

  • Autokorelasi setelah 10 pengamatan pertama sangat berkurang karena jumlah iterasi meningkat. Memang, dengan jumlah iterasi yang cukup besarρ^(l) untuk apa saja l>10akan menyatu ke nol. Ini adalah dasar dari pernyataan saya di awal - bahwa autokorelasi yang Anda amati hanyalah noise.
  • Namun demikian pengamatan tersebut di atas ρ^(l) konvergen ke nol untuk semua l>10 dengan meningkatnya jumlah simulasi, ρ^(l) untuk apa saja l10 sebenarnya tetap konstan pada ρ^(l)=ρ(l)=0.9l, sama seperti konstruksi model Anda akan menyarankan.

Perhatikan bahwa saya merujuk pada autokorelasi yang diamati sebagaiρ^(l)dan dengan autokorelasi yang sebenarnya sebagaiρ(l).

Candamir
sumber
1
ACF sampel itu sendiri autokorelasi, jadi bukan white noise. Selain itu, saya setuju, itu hanya masalah kebisingan / ukuran sampel.
Adrian
@Adrian Anda benar. Saya mengubah jawaban saya sesuai.
Candamir
It also becomes less and less likely to "stray" outside a confidence band- apakah kamu yakin itu benar?
Adrian
1
Terima kasih telah melubangi bagian lemah dari jawaban saya. Saya harus mengakui bahwa pernyataan itu hanya berdasarkan inspeksi visual. Saya melakukan penelitian lebih lanjut dan menemukan bahwa pita kepercayaan dihitung sebagai qnorm((1 + ci)/2)/sqrt(x$n.used), yaitucdf(1α/2)/n(lihat disini ). Namun, saya belum dapat menentukan tingkat konvergensi untuk autokorelasi yang diamati. Saya mengajukan pertanyaan baru ini untuk menyelesaikan masalah tetapi telah menghilangkan poin ini dari jawaban ini sementara itu.
Candamir
1
@Adrian Pertanyaan saya mengenai tingkat konvergensi dari autokorelasi yang diamati telah dijawab. Ternyata tingkat konvergensinya sama dengan tingkat kepercayaan:1/n. Klaim asli saya bahwa autokorelasi yang diamati menjadi semakin kecil kemungkinannya untuk "menyimpang" di luar pita kepercayaan adalah salah. Yang dikatakan, fakta ituρ^(l) konvergen ke nol untuk semua l>10karena jumlah simulasi meningkat masih menyelesaikan pertanyaan Anda, bahkan jika saya salah tentang tingkat konvergensi relatif.
Candamir