[알고리즘 트레이딩] 이상치(Outlier) 필터링과 상관 분석
1. 상관 분석과 이상치의 관계
상관 분석(Correlation Analysis)은 두 변수 간의 선형 관계를 측정하는 기법입니다. 가장 널리 사용되는 방법으로 피어슨 상관 계수(Pearson Correlation Coefficient) 가 있으며, 그 외에도 순위 상관 계수(Rank Correlation) 등의 방법이 존재합니다.
그러나, 이상치(Outlier)가 포함된 데이터는 상관 계수를 왜곡시킬 가능성이 높습니다. 따라서, 신뢰할 수 있는 상관 분석을 수행하려면 먼저 이상치를 감지하고 제거하거나 보정하는 과정이 필요합니다.
2. 이상치 필터링(Outlier Filtering) 방법
이상치를 제거하는 방법에는 여러 가지가 있으며, 데이터의 특성에 따라 적절한 방법을 선택해야 합니다.
(1) 사분위 범위(IQR, Interquartile Range) 기반 필터링
사분위 범위(IQR)는 데이터의 중앙값 주변 범위를 이용하여 이상치를 판별하는 방법입니다.
-
Q1 (제1사분위수): 데이터의 하위 25%에 해당하는 값
-
Q3 (제3사분위수): 데이터의 상위 25%에 해당하는 값
-
IQR = Q3 - Q1
-
이상치 기준:
-
하한:
Q1 - 1.5 × IQR
보다 작은 값 -
상한:
Q3 + 1.5 × IQR
보다 큰 값
-
📌 R 코드 예제 (IQR 필터링)
# 이상치 탐지 및 제거
Q1 <- quantile(data, 0.25)
Q3 <- quantile(data, 0.75)
IQR_value <- Q3 - Q1
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
filtered_data <- data[data > lower_bound & data < upper_bound]
print(filtered_data)
(2) Z-Score(표준 점수) 기반 필터링
Z-score는 데이터가 평균에서 표준편차(σ)의 몇 배만큼 떨어져 있는지를 측정하는 값입니다. 일반적으로 |Z-score| 값이 3 이상이면 이상치로 간주합니다.
📌 R 코드 예제 (Z-score 필터링)
z_scores <- scale(data) # 데이터 표준화
filtered_data <- data[abs(z_scores) < 3] # |Z-score| < 3 인 값만 선택
print(filtered_data)
(3) 윈저화(Winsorizing) - 극단값을 상한/하한으로 조정
이상치를 완전히 제거하는 대신, 극단값을 가장 가까운 정상 값으로 변경하는 방식입니다. 상위 5%, 하위 5% 값을 조정하여 이상치를 완화할 수 있습니다.
📌 R 코드 예제 (Winsorizing)
library(DescTools)
winsorized_data <- Winsorize(data, probs = c(0.05, 0.95)) # 하위 5%, 상위 95%로 조정
print(winsorized_data)
3. 이상치 필터링 방법 비교
방법 | 특징 | 장점 | 단점 |
---|---|---|---|
IQR 필터링 | 중앙값 기반 범위로 이상치 제거 | 간단하고 직관적 | 극단적인 이상치가 있을 때 제거 기준이 넓어질 수 있음 |
Z-score 필터링 | 평균과 표준편차를 활용 | 정규분포 데이터에 효과적 | 정규성이 없는 데이터에는 부적절 |
윈저화(Winsorizing) | 이상치를 일정 값으로 조정 | 극단값을 보정하여 유지 | 데이터 변형이 발생 |
✅ 정리:
-
정규분포를 따르는 데이터 →
Z-score 필터링
-
비정규분포(편향된 데이터, 금융 데이터 등) →
IQR 필터링
-
이상치를 제거하지 않고 보정하고 싶다면 →
Winsorizing
4. 결론: 상관 분석을 수행하기 전에 이상치 필터링이 필요한 이유
이상치는 상관 계수를 왜곡할 수 있기 때문에, 신뢰할 수 있는 상관 분석을 위해서는 먼저 이상치를 감지하고 제거하거나 보정하는 것이 중요합니다.
-
데이터를 시각적으로 확인(QQ Plot, Box Plot 등)
-
적절한 이상치 필터링 기법 적용
-
이상치를 보정한 후 상관 분석 수행
이러한 과정이 선행될 때, 더욱 신뢰할 수 있는 통계 분석 결과를 얻을 수 있습니다. 🚀
댓글
댓글 쓰기