Rob Hyndman'ın yukarıdaki gönderisine atıfta https://stats.stackexchange.com/a/1214/70282
Find.freq işlevi mükemmel çalışır. Kullanıyorum günlük veri setinde, 7 olması sıklığı doğru çalıştı.
Sadece hafta günlerinde denediğimde, sıklık 23.4'tür, ki bu, bir aydaki ortalama çalışma günü sayısı olan 21.42857 = 29.6 * 5 / 7'ye oldukça yakındır. (Ya da tam tersi 23 * 7/5 32'dir.)
Günlük verilerime baktığımda, ilk periyodu alma, bunun ortalamasını alma ve bir sonraki periyodu bulma vs. ile ilgili deneyler yaptım. Aşağıya bakınız:
find.freq.all = fonksiyonu (x) {
f = find.freq (x);
frekanslardan = C (f) '
ise (f> 1) {
= 1 başlar; #also try start = f;
X = period.apply (x, devamı (başlangıç, uzunluk (x), f), ortalama);
f = find.freq (x);
frekanslardan = C (frekanslardan, f);
}
if (uzunluk (sıklık)) == 1) {return (sıklık); }
(i 2'de: uzunluk (fraks)) {
frekanslardan [i] = frekanslardan [i] * frekanslardan [I-1] ';
}
frekanslardan [1: (uzunluk (frekanslardan) -1)];
}
find.freq.all (dailyts) # günlük verileri kullanma
Yukarıdaki, sekansın 1 veya f ile başlamasına bağlı olarak (7,28) veya (7,35) verir. (Yukarıdaki yoruma bakınız.)
Bu da, ilkelerin (...) mevsimsel dönemlerinin (7,28) veya (7,35) olması gerektiği anlamına gelir.
Mantık, algoritma parametrelerinin duyarlılığı verilen başlangıç koşullarına duyarlı görünüyor. Ortalama 28 ve 35, bir ayın ortalama uzunluğuna yakın olan 31.5'tir.
Tekerleği yeniden icat ettiğimi sanıyorum, bu algoritmanın adı nedir? R'de daha iyi bir uygulama var mı?
Daha sonra, 1 ile 7 arasındaki tüm başlangıçları denemek için yukarıdaki kodu koştum ve ikinci dönem için 35,35,28,28,28,28,28 elde ettim. Ortalama, bir aydaki ortalama gün sayısı olan 30’a kadar çıkar. İlginç...
Herhangi bir düşünce veya yorumunuz var mı?