Tự động hóa các quá trình AR (1) độc lập được nối


8

Đặ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.{Xt}{X1,X2,Giáo dục,X10}{X11,X12,Giáo dục,X20}

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.Xρ(tôi)ρ(tôi)tôi10

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()

hàm tự tương quan mẫu cho x

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()

acf của vani đồng bằng ar1

ρ(tôi)= =0,9tôi


ρ^(ρ^(60),ρ^(61))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)

phân phối mẫu của acf ước tính


1
Tôi hy vọng câu trả lời của tôi sẽ vẫn có ích với bạn, hơn 1,5 năm sau. Ít nhất nó đã giúp tôi cải thiện kỹ năng R của mình.
Candamir

Câu trả lời:


3

Tóm tắt điều hành: Có vẻ như bạn đang nhầm lẫn tiếng ồn với sự tự tương quan thực sự do kích thước mẫu nhỏ.

Bạn chỉ có thể xác nhận điều này bằng cách tăng ktham số trong mã của bạn. Xem các ví dụ dưới đây (Tôi đã sử dụng cùng của bạn set.seed(987)trong suốt để duy trì khả năng nhân rộng):

k = 1000 (mã gốc của bạn)

1000 mô phỏng

k = 2000

2000 mô phỏng

k = 5000

5000 mô phỏng

k = 10000

10000 mô phỏng

k = 50000

50000 mô phỏng

Chuỗi hình ảnh này cho chúng ta hai điều:

  • ρ^(tôi)tôi>10
  • ρ^(tôi)tôi>10ρ^(tôi)tôi10ρ^(tôi)= =ρ(tôi)= =0,9tôi

ρ^(tôi)ρ(tôi)


1
Bản thân ACF mẫu đã tự động tương thích, vì vậy nó không phải là nhiễu trắng . Ngoài ra, tôi đồng ý, đó chỉ là vấn đề kích thước mẫu / tiếng ồn.
Adrian

@Adrian Bạn đúng rồi. Tôi sửa đổi câu trả lời của tôi cho phù hợp.
Candamir

It also becomes less and less likely to "stray" outside a confidence band- bạn có chắc điều đó đúng không?
Adrian

1
qnorm((1 + ci)/2)/sqrt(x$n.used)cdf(1-α/2)/n

1
1/nρ^(tôi)tôi>10
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.