Search

시간의 흐름에 따른 지표의 변화를 살펴보고자 할 때

시계열(時系列, time-series) 데이터는 일정한 시간 간격으로 관측, 수집된 데이터를 말합니다. 따라서, 시계열 데이터에는 해당 레코드가 수집, 관측된 날짜 내지는 시간을 표시하는 “시간 변수”가 존재하게 됩니다.
“2022-10-01”, “2019-02-07 08:55:16”와 같은 시간 변수는 특정한 구조(예, 년-월-일)와 순서(Order)를 갖는 숫자 변수라고 생각할 수 있습니다. 하지만, 요일이나 주중/주말, 또는 시간대에 존재하는 주기적 패턴을 찾기 위해 시간 변수에서 월, 요일 같은 파생 변수를 가공, 추출해서 사용할 수 있고, 이때 시간 변수는 범주형 변수의 특성을 갖게 됩니다.
탐험적 분석(EDA) 관점에서 시계열 데이터를 분석하는 주요 목표는 아래 두가지입니다.
추세(Trend): 시간의 흐름에 따라 주요 지표가 상승, 하강하는 경향성
주기적/순환적 특성(Cyclic Pattern): 시간대, 요일, 월, 분기/계절 등에 따른 주기적 패턴

실습

아래에서 매장 매출 데이터로 시간의 흐름에 따른 매출액의 추세와 매출액에 영향을 주는 주기적 패턴이 존재하는지 함께 살펴 보겠습니다.
아래 내용을 직접 따라해 보시려면, HEARTCOUNT 로그인 → 캠페인 생성 → 샘플데이터 → 매출 데이터 선택하시면 됩니다.
먼저, 데이터셋 검토 과정에서 “주문일”이라는 시간 변수(2014-11-09)가 존재하는 걸 확인할 수 있네요.

시간의 흐름에 따른 매출 추이 살펴 보기

그럼, 스마트 플롯 메뉴에서 시간의 흐름에 따른 매출액의 변화를 살펴 보겠습니다.
X축에 시간 변수인 주문일을 선택하고 매출의 집계 방식을 평균에서 (총)합으로 변경합니다.
주문일 옆의 시계 아이콘을 눌러 매출을 집계할 시간의 간격(time grain)을 년, 분기, 월, 주 등으로 변경해 봅시다. 시간 간격(time-grain)을 월로 선택했을 때 우리가 시각적으로 인지할 수 있는 적정 수준의 정보가 표현되는 것 같습니다.
하위 그룹에 “제품대분류”를 선택한 후 차트 유형을 stacked area(스택 영역)로 변경합니다.
월별로 제품대분류별 매출총합이 계산되어 켜켜이 쌓인 시각화가 완성되었네요.
그런데 위 차트를 보고 당최 무슨 메세지를 전달할 수 있나요? 월별로 제품별로 매출총액 들쑥 날쑥 했다는 이야기는 맞는 이야기지만 뻔한 이야기라 정보량이 없는 메세지입니다.

매출의 계절적, 주기적 특성 찾아 보기

X축에 표현할 변수를 “주문일” 아래 있는 파생 시간 변수들 중 하나인 “주문일 - 월별 주기”를 선택해 봅시다. (파생 시간 변수는 HEARTCOUNT에서 주기적 패턴을 쉽게 찾을 수 있도록 시간 변수를 자동으로 가공해서 만든 추가 변수들입니다.)
그리고 년도별로 비교할 수 있도록 화면분할 조건으로 “주문일 -년”을 선택합니다.
차트 유형도 stacked-area에서 stacked-bar로 변경해 볼까요. 연속된 흐름이 아니라 개별 월에 발생한 구체적 매출 총액을 비교하기에는 바차트가 더 적절할 거 같습니다.
그리고 우측창의 하위그룹 범례에서 가구, 사무용품, 전자제품을 하나씩 클릭하여 제품대분류별 매출에 어떤 패턴이 있는지 확인해 봅시다.
내친김에, X축에 월별 주기 대신 “요일별 주기”를 선택하면 월화수목금토일 별로 매출이 어떻게 달랐는지 확인할 수 있습니다.
시간이라는 것은 우리가 직접적 통제력을 행사할 순 없지만 세상을, 내 데이터를 더 잘 이해하기 위한 주요한 차원입니다. 주요 지표가 지난 달과, 작년 같은 달과 비교해서 나빠진 경우 그 원인을 찾기 위해 데이터를 깊이 들여다 보는 일이 EDA라고 해도 과언이 아닐 것입니다.
시간 변수를 한 방향으로 흐르는 순서를 갖는 숫자 변수로 활용하여 추이를 확인할 수도 있고, 시간 변수에서 월, 요일, 시간대 등 범주적 특성을 뽑아 내어 순서를 갖는 범주형 변수로 활용할 수도 있다는 걸 기억해 주세요.