시계열 데이터 스무딩


14

수면 트렌드를 분석하고 선택적으로 가벼운 수면 중에 원하는 시간 근처에서 사용자를 깨울 수 있도록 수면 중에 가속도계 데이터를 기록하는 안드로이드 응용 프로그램을 구축 중입니다.

경보와 데이터를 수집하고 저장하는 구성 요소를 이미 구축했습니다. 나는 여전히 수면 데이터를 표시하고 저장하는 짐승을 정말 의미 있고 분명한 방식으로 해결해야합니다.

몇 장의 사진에는 2 천 단어가 있습니다.

다음은 30 초 간격으로 수집 된 필터링되지 않은 데이터, 이동 합계입니다.

그리고 같은 데이터는 이동 평균 평활화를 나타냅니다.

편집) 두 차트 모두 보정을 반영합니다. 최소 '노이즈'필터 및 최대 컷오프 필터와 경보 트리거 레벨 (흰색 선)이 있습니다.

불행히도, 이들 중 어느 것도 최적의 솔루션이 아닙니다. 첫 번째는 일반 사용자에게는 이해하기가 약간 어렵고, 두 번째는 이해하기 쉽고 실제로 진행중인 많은 것을 숨 깁니다. 특히 평균화는 움직임의 급상승의 세부 사항을 제거하며 이것이 의미가 있다고 생각합니다.

이 차트가 왜 그렇게 중요한가요? 이 시계열은 밤새 사용자에게 피드백으로 표시되며 나중에 검토 / 분석하기 위해 저장됩니다. 스무딩은 메모리 비용 (RAM 및 스토리지 모두)을 이상적으로 낮추고 리소스가 부족한 전화 / 장치에서 렌더링 속도를 빠르게합니다.

데이터를 부드럽게하는 더 좋은 방법이 있습니다. 선형 회귀를 사용하여 움직임의 '급격한'변화를 파악하고 이동 평균 스무딩을 수정하는 등 모호한 아이디어가 있습니다. 좀 더 최적으로 해결할 수있는 것으로 먼저 들어가기 전에 더 많은 지침과 정보가 필요합니다.

감사!

답변:


16

첫째, 압축 및 분석 / 표현에 대한 요구 사항이 반드시 동일 할 필요는 없습니다. 실제로 분석을 위해 모든 원시 데이터 를 유지 하고 다양한 방식으로 데이터를 슬라이스하고 다이 싱 할 수 있어야합니다. 그리고 당신에게 가장 적합한 것은 당신이 그것을 얻고 자하는 것에 크게 달려 있습니다. 그러나 시도 할 수있는 여러 가지 표준 트릭이 있습니다.

  • 원시 데이터가 아닌 차이점 사용
  • 저수준 노이즈를 제거하려면 임계 값을 사용하십시오. (작은 변경을 무시하기 위해 차이점을 결합하여 결합하십시오.)
  • 이동이 아닌 활동 레벨을 캡처하기 위해 평균이 아닌 일정 시간 동안의 분산 을 사용하십시오.
  • 시간 간격을 고정 간격에서 가변 길이 실행으로 변경하고 일부 기준이 유지하는 변경의 단일 데이터 포인트 시퀀스 (예 : 동일한 방향의 차이, 최대 임계 값까지)로 누적
  • 실제 값에서 서수로 데이터를 변환합니다 (예 : 낮음, 중간, 높음). 개별 샘플이 아닌 타임 빈에서이 작업을 수행 할 수도 있습니다 (예 : 5 분마다의 활동 수준)
  • 적절한 컨볼 루션 커널 *을 사용 하여 이동 평균보다 미묘하게 부드럽게하거나 급격한 변화와 같은 관심있는 기능을 선택하십시오.
  • 사용 FFT의 계산하는 라이브러리를 파워 스펙트럼을

마지막은 목적에 따라 약간 비싸지 만 "수면 리듬"과 같은 측면에서 매우 유용한 프레젠테이션 옵션을 제공 할 것입니다. (나는 안드로이드에 대해 아무것도 옆에 알고 있지만, 그건 생각할 수있는 그 어떤 / 많은 / 모든 단말기는 당신이 활용할 수있는 DSP 하드웨어에 내장되어 있습니다.)


* 디지털 신호 처리를 중심으로하는 컨볼 루션을 감안할 때 온라인에서 액세스 가능한 소개를 찾는 것은 매우 어렵습니다. 또는 3 분 이상 인터넷 검색을합니다. 제안을 환영합니다!


10

스플라인 및 황토를 포함하여 많은 비모수 적 평활 알고리즘이 있습니다. 그러나 그들은 갑작스런 변화도 부드럽게 할 것입니다. 저역 통과 필터도 마찬가지입니다. 갑작스런 점프를 허용하지만 여전히 노이즈를 매끄럽게하는 웨이블릿 기반 스무더가 필요할 수 있습니다.

확인 퍼시벌과 월든 (2000) 및 관련 R 패키지를 . Java 솔루션을 원하지만 R 패키지의 알고리즘은 오픈 소스이므로 번역 할 수 있습니다.


3

이것은 당신이 요구하는 것에 다소 접하지만 칼만 필터를 살펴볼 가치가 있습니다.


1

Savitzky-Golay 스무딩이 좋은 해답이 될 수 있습니다. 각 시간 창에 데이터에 고정 상수를 곱하면 슬라이딩 시간 창 (해당 데이터에 대한 회선)에서 스무딩하는 최소 제곱을 매우 효율적으로 구현합니다. 값, 도함수, 이차 도함수 이상에 적합 할 수 있습니다.

슬라이딩 시간 창의 크기와 해당 시간 창의 다항식 적합도에 따라 결과가 얼마나 까다로운 지 선택합니다. 이는 원래 크로마토 그래피를 위해 개발 된 것으로 피크가 결과의 필수 부분입니다. SG 스무딩의 바람직한 특성 중 하나는 피크의 위치가 유지된다는 것입니다. 예를 들어, 3 차 곡선 맞춤이있는 5 ~ 11 포인트 창은 노이즈를 줄이지 만 여전히 피크를 유지합니다.

Wikipedia에는 ​​Savitzky-Golay 필터 (시스템 제어 이론 및 시계열 분석에서 일반적인 용어에 약간의 폭력을 가하는 것이 아니라 스무딩이라고하는 원본 논문)에 관한 좋은 기사가 있습니다. 또한 이차 미분 추정치의 공식에 대한 Wikipedia 기사에 오류가 있음을 알고 있어야합니다. 해당 기사의 대화 섹션을 참조하십시오. 편집 : Wikipedia 기사가 수정되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.