Tạo các giá trị ngẫu nhiên tương quan tự động trong R


11

Chúng tôi đang cố gắng tạo các giá trị ngẫu nhiên tương quan tự động sẽ được sử dụng làm thời gian. Chúng tôi không có dữ liệu hiện có mà chúng tôi đề cập và chỉ muốn tạo vector từ đầu.

Một mặt, tất nhiên chúng ta cần một quá trình ngẫu nhiên với phân phối và SD của nó.

Mặt khác, sự tương quan tự động ảnh hưởng đến quá trình ngẫu nhiên phải được mô tả. Các giá trị của vectơ được tự động tương quan với cường độ giảm dần theo một số mốc thời gian. ví dụ lag1 có 0,5, lag2 0,3, lag1 0,1, v.v.

Vì vậy, cuối cùng, vectơ sẽ trông một cái gì đó: 2, 4, 7, 11, 10, 8, 5, 4, 2, -1, 2, 5, 9, 12, 13, 10, 8, 4, 3, 1, -2, -5

và như thế.

Câu trả lời:


11

Tôi thực sự thường gặp vấn đề đó. Hai cách yêu thích của tôi để tạo chuỗi thời gian có tương quan tự động trong R phụ thuộc vào việc tôi có muốn một quy trình đứng yên hay không.

Đối với một chuỗi thời gian không cố định, tôi sử dụng chuyển động Brown. Ví dụ: với độ dài 1000 tôi làm:

x <- diffinv(rnorm(999))

Đối với chuỗi thời gian đứng yên, tôi lọc nhiễu Gaussian. Ví dụ, điều này trông giống như:

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

Trong trường hợp đó, tương quan tự động ở độ trễ là 0 nếu . Trong các trường hợp khác, chúng ta phải tính toán mối tương quan giữa các tổng của các biến. Ví dụ: hiệp phương sai làττ>2τ=1

Cov(X1;X2)=Cov(Y1+Y2+Y3;Y2+Y3+Y4)=Var(Y2)+Var(Y3)=2.

Vì vậy, bạn thấy rằng hiệp phương sai tự động giảm xuống tuyến tính cho đến trong đó là chiều dài của bộ lọc.nn

Bạn cũng có thể muốn thực hiện chuỗi thời gian bộ nhớ dài (như chuyển động Brownian phân đoạn), nhưng điều này có liên quan nhiều hơn. Tôi có triển khai R của phương pháp Davies-Harte mà tôi có thể gửi cho bạn nếu bạn muốn.


Để có được chứng ngộ của chuỗi thời gian bộ nhớ lâu tôi muốn giới thiệu cuốn sách 1996 Wornell của (link: books.google.cl/books/about/... ), :-). Mặc dù khả năng dễ điều khiển của bộ nhớ dài xử lý nó không "dễ dàng", nhưng bạn vẫn có thể làm được.
Néstor

Tôi đã sử dụng phương pháp của bạn và nó hoạt động nói chung, nhưng tôi nhận được độ lệch nhỏ giữa chức năng đích được sử dụng trong bộ lọc và chức năng tự tương quan kết quả. Xin hãy xem câu hỏi này: stats.stackexchange.com/questions/176722/iêu
nnn

7

Nếu bạn có một chức năng tự động điều khiển nhất định, mô hình tốt nhất (về khả năng chuyển đổi) tôi có thể nghĩ đến là một quy trình gaussian đa biến, trong đó, được đưa ra hàm tự động tại lag , bạn có thể dễ dàng tạo thành ma trận hiệp phương sai ,R(τ)τ

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

Với ma trận hiệp phương sai này, bạn lấy mẫu dữ liệu từ một gaussian đa biến với ma trận hiệp phương sai đã cho , nghĩa là lấy một vectơ từ phân phối trong đó là vectơ trung bình.Σ

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

5

Bạn có thể tạo một chuỗi tương quan bằng cách xây dựng một quy trình tự phát, ví dụ quy trình AR (1) . Tạo bằng cách sử dụng trình tạo số ngẫu nhiên thống nhất cho phân phối đã chọn của bạn. Sau đó Đặt Nhận , v.v. Các được chọn liên tiếp một cách ngẫu nhiên bằng cách sử dụng các số ngẫu nhiên thống nhất của bạn. Để cung cấp cho giá trị trung bình và độ lệch chuẩn bạn muốn, bạn có thể lấy nó từ giá trị trung bình và phương sai của chuỗi nhiễu . Chọn một cách thích hợp.X(t)=aX(t1)+e(t)e(0)X(0)=e(0)X(1)=aX(0)+e(1)e(i)X(i)e(i)e(i)


4
Có lẽ đáng để chỉ ra sự tồn tại của arima.sim()chức năng ở đây.
đánh dấu

Chắc chắn những người bây giờ R nên đưa ra những gợi ý để thực hiện trong R như OP muốn biết.
Michael R. Chernick
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.