## 프로젝트 개요
실제 데이터에서 시간 기반 이상치를 자동으로 감지하여 비정상적인 패턴을 식별하는 분석 툴입니다. 주로 재무 데이터, 공장 운영 로그 등에 적용 가능합니다.
## 주요 기능
- CSV 파일에서 시간 시리즈 데이터 로드
- 이상치 자동 탐지 알고리즘 실행
- 결과 시각화 및 저장 기능
- 오류 발생 시 명확한 에러 메시지 제공
## 사용 방법
1. 예제 데이터(csv)를 동일 폴더에 위치시킵니다.
2. R 스크립트 파일을 열고 F5 키로 실행합니다.
3. 결과는 'anomalies_plot.png' 파일로 저장됩니다.
## 확장 가능성
- 추가적인 이상치 탐지 알고리즘(예: Isolation Forest) 구현
- 실시간 데이터 스트림 처리 기능 추가
- 다양한 시각화 옵션 확대
📊 시간 시리즈 데이터에서 이상치 탐지하기
R 예제
중급
난이도
예제
타입
10/26
등록일
시간 시리즈 데이터에서 이상치 탐지하기
중급태그
코드 예제
# 시간 시리즈 이상치 탐지 예제
library(tidyverse)
library(forecast)
library(ggplot2)
library(tsoutliers)
# 오류 처리 함수
tryCatchBlock <- function(expr) {
tryCatch(
expr,
error = function(e) {
message <- paste0("오류 발생: ", e$message)
cat(message, '
')
return(NULL)
}
)
}
# 데이터 로드 함수
load_data <- function(file_path) {
tryCatchBlock({
data <- read_csv(file_path)
if (!any(names(data) %in% c("date", "value"))) {
stop("필수 컬럼(date, value)이 누락되었습니다.")
}
data$date <- as.Date(data$date)
return(data)
})
}
# 이상치 탐지 함수
detect_anomalies <- function(data) {
tryCatchBlock({
ts_data <- ts(data$value, frequency = 12)
model <- tslm(ts_data ~ 1)
outliers <- tsoutliers(ts_data, type = c("A","LS","AO","L"),
max.iter = 50, quiet = TRUE)
return(outliers$poisson)
})
}
# 주요 실행 로직
tryCatchBlock({
# 데이터 로드
data <- load_data("sample_time_series.csv")
# 이상치 탐지
anomalies <- detect_anomalies(data)
# 시각화
plot_data <- data %>%
mutate(anomaly = ifelse(date %in% anomalies$date, "anomaly", "normal"))
ggplot(plot_data, aes(x = date, y = value, color = anomaly)) +
geom_line() +
labs(title = "시간 시리즈 이상치 탐지 결과") +
theme_minimal()
# 결과 저장
ggsave("anomalies_plot.png", plot = last_plot(), width = 10, height = 6)
})
등록일: 2025년 10월 26일 02:36
언어 정보
언어
R
카테고리
Data
인기도
#13
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요