Cách hiệu quả nhất để tạo tổng số chuyển động trung bình hoặc tổng hợp trong R là gì? Làm thế nào để bạn làm các chức năng cán cùng với một "nhóm của"?Số tiền tích lũy, số trung bình di chuyển và SQL "theo" tương đương trong R
Trả lời
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
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ặcnextfri()
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
- 1. Số tích lũy trong R
- 2. Tần số tích lũy theo hệ số
- 3. Cách nhận số tiền tích lũy
- 4. Cách tính trung bình di chuyển tích lũy trong Python/SQLAlchemy/Flask
- 5. Tổng hợp và có trọng số trung bình trong R
- 6. Tạo biến số tiền di chuyển trong R
- 7. Cách tạo bảng tần số trong R với tần số tích lũy và tần số tương đối
- 8. Tính toán trung bình di chuyển theo thời gian
- 9. Tính trung bình di chuyển trong C++
- 10. Cách tính trung bình có trọng số trong R?
- 11. Tính trung bình di chuyển trong F #
- 12. hai chiều di chuyển trung bình?
- 13. Làm cách nào để tính toán mức trung bình di động theo số mũ trên postgres?
- 14. Di chuyển trung bình của ba giá trị trước đó trong R
- 15. Sắp xếp boxplot bởi trung bình (và không phải trung bình) trong R
- 16. C++ tích lũy với di chuyển thay vì copy
- 17. trung bình mỗi 16 cột trong r
- 18. gì biểu tượng ::: trung bình trong R
- 19. SQLAlchemy subquery - trung bình của khoản tiền
- 20. Mảng đơn giản (di chuyển trung bình) trong C#
- 21. Tính trung bình hàng ngày trong R
- 22. Tương đương với Django của SQL không nằm trong số
- 23. Gói toán học Java cho phép phân phối tích lũy nghịch đảo của bình thường với poisson và mũ số
- 24. Âm mưu cán/di chuyển trung bình trong d3.js
- 25. Tìm số trung bình của các số sử dụng MapReduce
- 26. Tính trung bình di chuyển theo hàm mũ trên một hàng đợi trong C#
- 27. Trung bình trên một số() trong cùng một truy vấn
- 28. Tính trung bình có trọng số cho số lớn
- 29. RX: Biến đổi trạng thái của chuỗi, ví dụ: trung bình di động theo cấp số nhân
- 30. Làm cách nào để tạo một chuỗi số trung bình theo giờ trong MySQL?