R - 시계열 분석: 초보자 가이드

안녕하세요, 미래의 데이터 마법사 여러분! R를 사용한 시계열 분석의 흥미로운 여정을 함께 하게 되어 기쁩니다. (floppy disk가 실제로 유연했던 시절을 기억하는 만큼 오래된 컴퓨터 과학 교사입니다.) 수많은 학생들이 완전한 초보자에서 자신감 있는 분석가로 변모하는 모습을 목격해왔으니, 프로그래밍에 새로운 사람이라고 걱정하지 마세요. 우리는 기본부터 함께 차근차근 진행해 나갈 것입니다.

R - Time Series Analysis

시계열 분석이란?

R 코드로 들어가기 전에, 시계열 분석이到底是什么인지 이야기해 보겠습니다. 지역 상점에서 1년 동안 매일 아이스크림 콘의 판매 수를 추적하는 상상해 봅시다. 그것이 바로 시계열입니다! 시간에 따라 측정된 데이터 점의 순서입니다. 시계열 분석은 이러한 역사적 데이터를 바탕으로 패턴, 추세를 이해하고 예측을 하는 데 도움을 줍니다.

이제 R 코드로 손을 더러워보겠습니다!

R 시작하기

먼저 R과 RStudio를 설치해야 합니다. R은 엔진이고, RStudio는 운전을 쉽게 만드는 멋진 대시보드라고 생각하면 됩니다. 두 가지를 모두 설치한 후, RStudio를 열고 시작해 보겠습니다!

# R의 주석입니다. 코드에는 영향을 미치지 않지만, 우리 인간들이 이해하는 데 도움이 됩니다!

# 간단한 시계열을 생성해 봅시다
sales <- c(100, 120, 140, 160, 180)
dates <- as.Date(c("2023-01-01", "2023-01-02", "2023-01-03", "2023-01-04", "2023-01-05"))

# 이제 그것들을 시계열 객체로 결합해 봅시다
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)

# 우리가 만든 것을 확인해 봅시다
print(ts_data)

이 예제에서 우리는 매우 간단한 일일 판매 데이터의 시계열을 생성했습니다. c() 함수는 값을 벡터(리스트라고 생각하면 됩니다)로 만듭니다. 그런 다음 ts() 함수를 사용하여 시계열 객체를 생성하고, 언제 시작되고 얼마나 자주 측정되는지 지정합니다.

다양한 시간 간격

이제 다양한 시간 간격에 대해 이야기해 보겠습니다. 시계열 데이터는 일일, 월간, 분기별, 또는 상상할 수 있는 모든 간격이 될 수 있습니다. R은 이 모든 것을 처리할 수 있는 유연성을 가지고 있습니다. 다음 예제를 보세요:

# 월간 데이터
monthly_data <- ts(1:24, start = c(2022, 1), frequency = 12)

# 분기별 데이터
quarterly_data <- ts(1:8, start = c(2022, 1), frequency = 4)

# 연간 데이터
yearly_data <- ts(1:10, start = 2013)

# 이제 출력해 봅시다
print(monthly_data)
print(quarterly_data)
print(yearly_data)

이 예제에서 우리는 다양한 빈도의 시계열을 생성하고 있습니다. 월간 데이터는 frequency = 12 (1년에 12개월), 분기별 데이터는 frequency = 4 (1년에 4분기), 연간 데이터는 빈도를 지정할 필요가 없습니다.

시계열 시각화

"그림 한장은 천 마디 말이 더할 수 없다"는 말이 있습니다. 데이터 분석에서는 이 말이 더욱 그대로 적용됩니다. 시계열을 시각화해 보겠습니다:

# 먼저 더 흥미로운 데이터셋을 생성해 봅시다
set.seed(123)  # 모두가 같은 "random" 숫자를 얻을 수 있도록 합니다
sales <- 100 + cumsum(rnorm(100))  #随机数的累加和
dates <- seq(as.Date("2023-01-01"), by = "day", length.out = 100)
ts_data <- ts(sales, start = c(2023, 1), frequency = 365)

# 이제 시각화해 봅시다
plot(ts_data, main = "Daily Sales", xlab = "Date", ylab = "Sales")

이 코드는 약간의 랜덤성을 가진 더 현실적인 판매 데이터셋을 생성하고 시각화합니다. plot() 함수는 시계열을 빠르고 간편하게 시각화하는 방법입니다.

여러 시계열

現實에서 우리는 종종 여러 시계열을 함께 분석하고자 합니다. 여러 시계열을 생성하고 시각화해 보겠습니다:

# 두 개의 시계열을 생성해 봅시다
set.seed(123)
sales_A <- 100 + cumsum(rnorm(100))
sales_B <- 120 + cumsum(rnorm(100))

# 그것들을 여러 시계열로 결합해 봅시다
multi_ts <- ts(cbind(sales_A, sales_B), start = c(2023, 1), frequency = 365)

# 두 개의 시계열을 그래프로 그려 봅시다
plot(multi_ts, main = "Sales Comparison", xlab = "Date", ylab = "Sales", col = c("blue", "red"))
legend("topleft", legend = c("Product A", "Product B"), col = c("blue", "red"), lty = 1)

여기서 우리는 두 개의 시계열을 생성하고 cbind()를 사용하여 결합합니다. 그런 다음 두 개의 시계열을 함께 그래프로 그립니다.

시계열 분석의 일반 방법

기본 사항을 다루고 나서, 시계열 분석에서 일반적으로 사용되는 몇 가지 방법을 살펴보겠습니다. 다음 표는 이러한 방법을 요약합니다:

방법 설명 R 함수
이동 평균 단기 변동을 부드럽게 합니다 ma() from forecast package
지수 평滑 최근 관측치에 더 큰 무게를 부여합니다 ets() from forecast package
ARIMA 자기 回귀 통합 이동 평균 arima() or auto.arima()
분해 시계열을 추세, 계절, 잔차 구성 요소로 분해합니다 decompose() or stl()

이 중 하나의 방법을 시도해 보겠습니다 - 분해:

# 시계열을 분해해 봅시다
decomposed <- decompose(ts_data)

# 분해를 그래프로 그려 봅시다
plot(decomposed)

이 분해는 우리의 시계열을 추세, 계절, 잔차 세 가지 구성 요소로 나눕니다. 데이터의 기본적인 패턴을 이해하는 데 매우 유용합니다.

결론

축하합니다! R를 사용한 시계열 분석의 매력적인 세계로 첫 걸음을 뗐습니다. 우리는 시계열 데이터를 생성, 시각화, 분석하는 기본 사항을 다루었습니다. 기억하시길, 새로운 기술을 배우는 것은 실습이 완벽을 만듭니다. 문제에 대한 호기심과 인내심을 가지고 접근하세요. 그러면 성공할 것입니다.

제가 가르치는 연간, 열심히 노력하는 학생들이 가장 잘하는 것은 호기심과 인내심을 가지고 문제에 접근하는 것입니다. 그러므로 탐구를 멈추지 말고, 질문을 계속하고, 가장 중요한 것은 코딩을 계속하세요!

Credits: Image by storyset