ในการอ้างอิงถึงโพสต์ของ Rob Hyndman ด้านบนhttps://stats.stackexchange.com/a/1214/70282
ฟังก์ชัน find.freq ทำงานได้อย่างยอดเยี่ยม ในชุดข้อมูลรายวันที่ฉันกำลังใช้จะทำให้ความถี่เป็น 7 ได้อย่างถูกต้อง
เมื่อฉันลองใช้เพียงแค่วันในสัปดาห์ก็กล่าวถึงความถี่คือ 23 ซึ่งใกล้เคียงกับ 21.42857 = 29.6 * 5/7 ซึ่งเป็นจำนวนวันทำงานเฉลี่ยในหนึ่งเดือน (หรือตรงกันข้าม 23 * 7/5 คือ 32)
เมื่อมองย้อนกลับไปที่ข้อมูลรายวันของฉันฉันได้ทดลองกับช่วงเวลาแรก ๆ โดยเฉลี่ยแล้วหาช่วงเวลาถัดไปเป็นต้นดูที่ด้านล่าง:
find.freq.all = function (x) {
f = find.freq (x);
freqs c = (ฉ);
ในขณะที่ (ฉ> 1) {
เริ่มต้น = 1; #also ลองเริ่ม = f;
x = period.apply (x, seq (เริ่มต้นความยาว (x), ฉ) ค่าเฉลี่ย);
f = find.freq (x);
freqs c = (freqs ฉ);
}
if (length (freqs) == 1) {return (freqs); }
สำหรับ (ฉันใน 2: ความยาว (ความถี่)) {
freqs [ผม] = freqs [ผม] * freqs [I-1];
}
freqs [1: (ความยาว (freqs) -1)];
}
find.freq.all (dailyts) #using ข้อมูลรายวัน
ข้างต้นให้ (7,28) หรือ (7,35) ขึ้นอยู่กับว่า seq เริ่มต้นด้วย 1 หรือ f (ดูความคิดเห็นด้านบน)
ซึ่งจะแปลว่าช่วงเวลาตามฤดูกาลสำหรับ msts (... ) ควรเป็น (7,28) หรือ (7,35)
ตรรกะนั้นอ่อนไหวต่อสภาวะเริ่มต้นเนื่องจากความไวของพารามิเตอร์อัลกอริธึม ค่าเฉลี่ยของ 28 และ 35 คือ 31.5 ซึ่งใกล้เคียงกับความยาวเฉลี่ยของเดือน
ฉันสงสัยว่าฉันสร้างใหม่ล้อแล้วชื่อของอัลกอริทึมนี้คืออะไร? มีการใช้งานที่ดีขึ้นใน R แห่งหนึ่งหรือไม่?
ต่อมาฉันรันโค้ดข้างต้นในการพยายามเริ่มต้นทั้งหมดตั้งแต่ 1 ถึง 7 และฉันได้ 35,35,28,28,28,28,28 สำหรับช่วงที่สอง ค่าเฉลี่ยทำงานได้ถึง 30 ซึ่งเป็นจำนวนวันเฉลี่ยในหนึ่งเดือน ที่น่าสนใจ ...
ความคิดหรือความคิดเห็นใด ๆ