2009-07-23 40 views

Trả lời

9

Trong khi sở thú là rất tốt, đôi khi có những cách đơn giản hơn. Nếu dữ liệu của bạn hoạt động tốt và có khoảng cách đều nhau, hàm embed() có hiệu quả cho phép bạn tạo nhiều phiên bản bị trễ của một chuỗi thời gian. Nếu bạn nhìn vào bên trong gói VARS để tự động hồi quy vector, bạn sẽ thấy rằng tác giả gói chọn tuyến đường này.

Ví dụ, để tính toán cán trung bình giai đoạn 3 của x, trong đó x = (1 -> 20)^2:

> x <- (1:20)^2 
> embed (x, 3) 
     [,1] [,2] [,3] 
[1,] 9 4 1 
[2,] 16 9 4 
[3,] 25 16 9 
[4,] 36 25 16 
[5,] 49 36 25 
[6,] 64 49 36 
[7,] 81 64 49 
[8,] 100 81 64 
[9,] 121 100 81 
[10,] 144 121 100 
[11,] 169 144 121 
[12,] 196 169 144 
[13,] 225 196 169 
[14,] 256 225 196 
[15,] 289 256 225 
[16,] 324 289 256 
[17,] 361 324 289 
[18,] 400 361 324 
> apply (embed (x, 3), 1, mean) 
[1] 4.666667 9.666667 16.666667 25.666667 36.666667 49.666667 
[7] 64.666667 81.666667 100.666667 121.666667 144.666667 169.666667 
[13] 196.666667 225.666667 256.666667 289.666667 324.666667 361.666667 
1

Tôi đã nhận được câu trả lời hay từ Achim Zeileis trong danh sách r. Đây là những gì ông nói:

library(zoo) 
## create data 

x <- rnorm(365) 
## transform to regular zoo series with "Date" index 

x <- zooreg(x, start = as.Date("2004-01-01")) plot(x) 

## add rolling/running/moving average with window size 7 

lines(rollmean(x, 7), col = 2, lwd = 2) 

## if you don't want the rolling mean but rather a weekly ## time series of means you can do 
nextfri <- function(x) 7 * ceiling(as.numeric(x - 1)/7) + as.Date(1) xw <- aggregate(x, nextfri, mean) 

## nextfri is a function which computes for a certain "Date" ## the next friday. xw is then the weekly series. 

lines(xw, col = 4) 

Achim tiếp tục nói:

Lưu ý, rằng sự khác biệt giữa là cán nghĩa và hàng loạt tổng hợp là do sự sắp xếp khác nhau. Bạn có thể thay đổi số này bằng cách thay đổi đối số 'align' trong rollmean() hoặc nextfri() chức năng trong cuộc gọi tổng hợp .

Tất cả điều này đến từ Achim, không phải từ tôi: http://tolstoy.newcastle.edu.au/R/help/05/06/6785.html

Các vấn đề liên quan