In Bezug auf Rob Hyndmans Beitrag über https://stats.stackexchange.com/a/1214/70282
Die find.freq-Funktion funktioniert hervorragend. Auf dem täglichen Datensatz, den ich verwende, wurde die Häufigkeit mit 7 korrekt berechnet.
Als ich es nur an den Wochentagen ausprobierte, wurde erwähnt, dass die Häufigkeit 23 ist, was bemerkenswert nahe an 21,42857 = 29,6 * 5/7 liegt, was der durchschnittlichen Anzahl von Arbeitstagen pro Monat entspricht. (Oder umgekehrt 23 * 7/5 ist 32.)
Wenn ich auf meine täglichen Daten zurückblicke, experimentierte ich mit der Vermutung, dass ich die erste Periode genommen, daraus gemittelt und dann die nächste Periode gefunden habe, usw. Siehe unten:
find.freq.all = function (x) {
f = find.freq (x);
freqs = c (f);
während (f> 1) {
start = 1; #versuche auch start = f;
x = period.apply (x, seq (Anfang, Länge (x), f), Mittelwert);
f = find.freq (x);
freqs = c (freqs, f);
}
if (length (freqs) == 1) {return (freqs); }
für (i in 2: Länge (Freqs)) {
freqs [i] = freqs [i] * freqs [i-1];
}
Frequenzen [1: (Länge (Frequenzen) -1)];
}
find.freq.all (dailyts) #mit täglichen Daten
Das obige ergibt (7,28) oder (7,35), je nachdem, ob die Folge mit 1 oder f beginnt. (Siehe Kommentar oben.)
Was bedeuten würde, dass die saisonalen Perioden für MSTs (...) (7,28) oder (7,35) sein sollten.
Die Logik scheint in Anbetracht der Empfindlichkeit der Algorithmusparameter empfindlich gegenüber Anfangsbedingungen zu sein. Der Mittelwert von 28 und 35 liegt bei 31,5, was in etwa der durchschnittlichen Länge eines Monats entspricht.
Ich vermute, ich habe das Rad neu erfunden. Wie heißt dieser Algorithmus? Gibt es irgendwo eine bessere Implementierung in R?
Später habe ich den obigen Code ausgeführt, indem ich alle Starts von 1 bis 7 ausprobiert habe, und ich habe 35,35,28,28,28,28,28,28 für die zweite Periode erhalten. Der Durchschnitt liegt bei 30 Tagen pro Monat. Interessant...
Irgendwelche Gedanken oder Kommentare?