Để tham khảo bài đăng của Rob Hyndman ở trên https://stats.stackexchange.com/a/1214/70282
Hàm find.freq hoạt động rực rỡ. Trên tập dữ liệu hàng ngày tôi đang sử dụng, nó hoạt động chính xác với tần số là 7.
Khi tôi thử nó chỉ trong những ngày trong tuần, nó đã đề cập đến tần suất là 23, gần đáng kể với 21.42857 = 29,6 * 5/7, đây là số ngày làm việc trung bình trong một tháng. (Hoặc ngược lại 23 * 7/5 là 32.)
Nhìn lại dữ liệu hàng ngày của tôi, tôi đã thử nghiệm một linh cảm của việc thực hiện giai đoạn đầu tiên, tính trung bình theo đó và sau đó tìm giai đoạn tiếp theo, v.v. Xem bên dưới:
find.freq.all = function (x) {
f = find.freq (x);
freqs = c (f);
trong khi (f> 1) {
bắt đầu = 1; # cũng thử bắt đầu = f;
x = period.apply (x, seq (bắt đầu, chiều dài (x), f), trung bình);
f = find.freq (x);
freqs = c (freqs, f);
}
if (length (freqs) == 1) {return (freqs); }
for (i in 2: length (freqs)) {
freqs [i] = freqs [i] * freqs [i-1];
}
freqs [1: (chiều dài (freqs) -1)];
}
find.freq.all (Dailyts) #use dữ liệu hàng ngày
Ở trên cho (7,28) hoặc (7,35) tùy thuộc vào việc seq bắt đầu bằng 1 hay f. (Xem bình luận ở trên.)
Điều đó có nghĩa là các giai đoạn theo mùa cho msts (...) nên là (7,28) hoặc (7,35).
Logic có vẻ nhạy cảm với các điều kiện ban đầu với độ nhạy của các tham số thuật toán. Giá trị trung bình của 28 và 35 là 31,5 gần với độ dài trung bình của một tháng.
Tôi nghi ngờ tôi đã phát minh lại bánh xe, tên của thuật toán này là gì? Có một thực hiện tốt hơn trong R ở đâu đó?
Sau đó, tôi đã chạy đoạn mã trên trong việc thử tất cả bắt đầu từ 1 đến 7 và tôi đã nhận được 35,35,28,28,28,28,28 cho giai đoạn thứ hai. Trung bình làm việc đến 30, đó là số ngày trung bình trong một tháng. Hấp dẫn...
Bất kỳ suy nghĩ hoặc ý kiến?