Programming/R

R에서 이상치 탐지 및 처리하는 방법 알아보기

사족보행 개발자 2025. 2. 18. 17:27
728x90

이상치는 데이터 분석에서 중요한 요소이다. 이상치를 적절히 감지하고 처리하는 것은 분석 결과의 신뢰성을 높이는 데 필수적이다. R에서 이상치를 감지하는 방법과 처리하는 방법을 코드와 함께 설명한다.

1. 이상치 감지 방법

이상치를 감지하는 방법에는 여러 가지가 있다. 대표적인 방법으로 IQR(Interquartile Range), Z-score, Boxplot, 그리고 시각적 탐색이 있다.

1.1 IQR을 이용한 이상치 탐지

IQR은 사분위수를 이용하여 이상치를 감지하는 방법이다. 사분위수 범위를 벗어난 값을 이상치로 판단한다.

# 데이터 생성
set.seed(123)
data <- c(rnorm(20, mean = 50, sd = 10), 100, 110) # 이상치 포함

# 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

# 이상치 확인
outliers <- data[data < lower_bound | data > upper_bound]
print(outliers)

1.2 Z-score를 이용한 이상치 탐지

Z-score는 표준화 점수를 사용하여 이상치를 판별하는 방법이다. 일반적으로 절대값이 3을 초과하는 경우 이상치로 간주한다.

# 평균과 표준편차 계산
mean_value <- mean(data)
sd_value <- sd(data)

# Z-score 계산
z_scores <- (data - mean_value) / sd_value

# Z-score 기준을 초과하는 값 찾기
outliers <- data[abs(z_scores) > 3]
print(outliers)

1.3 Boxplot을 이용한 이상치 탐지

Boxplot은 데이터를 시각적으로 확인할 수 있는 좋은 방법이다.

boxplot(data, main = "Boxplot of Data", col = "lightblue", horizontal = TRUE)

2. 이상치 처리 방법

이상치를 감지한 후에는 적절한 처리가 필요하다. 일반적인 처리 방법으로는 제거, 대체, 변환이 있다.

2.1 이상치 제거

이상치를 단순히 제거하는 방법이다.

clean_data <- data[data >= lower_bound & data <= upper_bound]
print(clean_data)

2.2 이상치 대체 (평균 또는 중앙값)

이상치를 평균 또는 중앙값으로 대체하는 방법이다.

median_value <- median(data)
data_replaced <- ifelse(data < lower_bound | data > upper_bound, median_value, data)
print(data_replaced)

2.3 로그 변환을 통한 이상치 처리

데이터의 분포가 비대칭적인 경우, 로그 변환을 사용하여 이상치를 완화할 수 있다.

log_data <- log(data + 1) # 0 또는 음수 방지를 위해 +1 추가
boxplot(log_data, main = "Boxplot of Log-transformed Data", col = "lightblue", horizontal = TRUE)

이상치를 감지하고 처리하는 방법은 데이터의 특성과 분석 목적에 따라 달라진다. 적절한 방법을 선택하여 이상치를 효과적으로 다루는 것이 중요하다.

728x90