2013-07-19 2 views
1

센서에서 시간과 온도를 저장하는 데이터 세트를 부드럽게하기 위해 R에서 stl() 함수를 사용하려고합니다. 주요 목표는 주위 온도 (베이스 라인 곡선)를 찾기 위해 함수에서 노이즈를 제거하는 것입니다. 나는 시간을 시리즈 형식으로 내 데이터를로드 한, 내가 STL()를 사용하려고 할 때, 그것은 나에게이 오류 준 : 여기 R - 주파수가 20 분인 시계열을 함수 stl()에 넣습니다.

Error in stl(timeseries[[1]]) : 
    series is not periodic or has less than two periods 

내 데이터입니다 : 내가로 변환 한

> head(stations[[1]]) 
       Date Unit Temp 
1 0013-06-30 10:00:01 C 32.5 
2 0013-06-30 10:20:01 C 32.5 
3 0013-06-30 10:40:01 C 33.5 
4 0013-06-30 11:00:01 C 34.5 
5 0013-06-30 11:20:01 C 37.0 
6 0013-06-30 11:40:01 C 35.5 

시계열 클래스 :

timeseries[[1]] = as.ts(stations[[1]]$Temp,freq=26280) 

참고 : 주파수는 20 분마다

을 촬영 데이터와 높은 s의 오류가 주파수의 불일치로 인해 tl()? 데이터를 시계열로 만들 때 뭔가 잘못했을 수 있다는 느낌이 들었으며 시리즈의 기간을 계산할 수있는 능력을 버렸습니다.

전체 세트 만이 포함되므로이 데이터가 모두 필요합니다. 4 일 분량의 데이터 (따라서 고주파수)

감사합니다.

+0

안녕하세요 @ user2498712. 문제가 해결 된 경우 이전 질문으로 돌아가서 답변을 수락하십시오. –

답변

5

오류 메시지는 시계열의 계절적 구성 요소를 추정하기 위해 적어도 2 계절에 대한 데이터가 필요하다는 것을 알려줍니다. 4 일간의 온도 데이터가있는 경우 계절별 구성 요소를 일 단위로 사용하고 싶을 것입니다. 따라서 시계열을 적절히 설정해야합니다. 하루에 24 * 3 회의 관측이 있으므로 주파수 여야합니다. 나는 그것을 테스트 할 수 없습니다 입력해도이 최소 2 일 동안 데이터를 필요로하기 때문에

timeseries[[1]] <- ts(stations[[1]]$Temp, frequency=24*3) 

그런 다음 stl(timeseries[[1]], "periodic")이 작동한다, 즉 2 시간 충분하지 않습니다.

+0

몇 주 전에이 문제에 직면했으며 해결 방법이 맞는지 확인할 수 있습니다 :-) – fdetsch

+0

우수함, 훌륭함 음, 고마워! 한 가지 문제는 스무딩 후에 여전히 많은 잡음을 유지한다는 것입니다. 고주파 시계열에서 더 좋은 방법이 있습니까? @그림자 – user2498712