위의 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 = 찾기 주파수 (x);
주파수 = c (f);
while (f> 1) {
시작 = 1; # 또한 시도하십시오 시작 = f;
x = 기간 적용 (x, seq (시작, 길이 (x), f), 평균);
f = 찾기 주파수 (x);
주파수 = c (주파수, f);
}
if (length (freqs) == 1) {반환 (freqs); }
for (i in 2 : length (freqs)) {
주파수 [i] = 주파수 [i] * 주파수 [i-1];
}
freqs [1 :( 길이 (freqs) -1)];
}
find.freq.all (dailyts) # 일별 데이터 사용
위의 내용은 seq가 1 또는 f로 시작하는지에 따라 (7,28) 또는 (7,35)를 나타냅니다. (위의 의견 참조)
msts (...)의 계절 기간이 (7,28) 또는 (7,35) 여야 함을 의미합니다.
로직은 알고리즘 파라미터의 감도가 주어지면 초기 조건에 민감하게 보입니다. 28과 35의 평균은 31.5이며 한 달의 평균 길이에 가깝습니다.
나는 바퀴를 재발 명했다고 생각합니다.이 알고리즘의 이름은 무엇입니까? R 어딘가에 더 나은 구현이 있습니까?
나중에 1에서 7까지의 모든 시작을 시도하면서 위의 코드를 실행했으며 두 번째 기간 동안 35,35,28,28,28,28,28을 얻었습니다. 평균은 30 일이며 한 달의 평균 일수입니다. 흥미로운 ...
생각이나 의견이 있습니까?