[비정형 데이터] 08. 신호 데이터의 이상치 제거하기

2020. 5. 4. 18:06데이터 분석/비정형데이터분석

신호 데이터는 누가 선을 건드려서 전기에 스파이크가 나는 현상과 같이 원하지 않는 데이터들이 존재할 수 있습니다. 이때 이상치를제거해야 합니다. 이상치는 전자기기 통신과정에서 발생한 이상값인지 무시해도 되는 값인지에 관해서는 경험 지식과 실험에 의해 결정이 됩니다. 

 

추세에서 벗어나는 이상치를 제거하는 방법에 대해 알아보겠습니다.

 

  • Hampel filter: 현재 시점 주변 데이터들의 중앙값 대비 얼마나 이상한가를 판단하는 함수
    • hampel(data, k=window수, t=표준편차 값 범위)
  1. 정해진 window구간 내 중앙값을 구함
  2. 각 샘플에 대한 중앙값의 절대 오차를 구함
  3. 절대 오차의 표준편차를 구함
  4. 현재 값의 절대 오차가 위 표준편차를 넘으면 중앙값으로 대체
x = sin(2*pi*(0:99)/100)

x[6] = 2
x[20] = -2

par(mfrow=c(2,1))

t = 1:length(x)
plot(t,x,'l')

# 샘플 6개로 구성된 데이터에서 중앙값과 샘플 각 값의 절대 오차의 표준편차가 2sigma영역보다 크면 이상치로 판단
filtered = hampel(x,k=6,t=2)
plot(t,filtered$y,'l')

결과

 

아직 이상치가 남아있는 것은 k값을 줄임으로써 제거할 수 있습니다.

 



728x90