Đặt là một quá trình ngẫu nhiên được hình thành bằng cách ghép iid rút ra từ quy trình AR (1), trong đó mỗi lần vẽ là một vectơ có độ dài 10. Nói cách khác, { X 1 , X 2 , đấm , X 10 } là sự hiện thực hóa của một quá trình AR (1); { X 11 , X 12 , Mạnh , X 20 } được rút ra từ cùng một quy trình, nhưng độc lập với 10 quan sát đầu tiên; vân vân.
ACF của - sẽ gọi nó là ρ ( l ) - trông như thế nào? Tôi đã hy vọng ρ ( l ) bằng 0 đối với độ trễ có độ dài l ≥ 10 vì, theo giả định, mỗi khối 10 quan sát là độc lập với tất cả các khối khác.
Tuy nhiên, khi tôi mô phỏng dữ liệu, tôi nhận được điều này:
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()
Tại sao có autocorrelations cho đến nay từ 0 sau lag 10?
Dự đoán ban đầu của tôi là burn-in trong arima.sim quá ngắn, nhưng tôi nhận được một mẫu tương tự khi tôi đặt rõ ràng, ví dụ: burn_in = 500.
Tôi đang thiếu gì?
Chỉnh sửa : Có thể trọng tâm của việc ghép AR (1) là một sự phân tâm - một ví dụ thậm chí đơn giản hơn là:
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()
## 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)