📈📉 비즈니스 어낼리틱스/🕑 시계열 분석

🕑시계열데이터 분석 01 - is.ts( ) 함수

nyamin9 2023. 3. 24. 15:13

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


🕑 시계열 자료 준비

 

시계열 데이터는 시간의 흐름에 따라 하나 혹은 다수의 변수가 측정된 데이터입니다. cross sectional data, 즉 횡단면 데이터에 비해 적은 객체를 가지고 있으며, 하나의 객체에 대한 측정량을 다룹니다. longitudinal data는 여러 명의 데이터를 시간의 흐름에 따라 측정한 데이터로써, 시계열 + cross sectional data의 성격을 띕니다. 분석하기 위해서는 꽤나 복잡한 모델이 필요합니다.

 

 

또한 시계열 데이터는 관측 주기가 데이터에 항상 따라옵니다. 주로 일별, 월별, 년도별로 주기를 정하며, 예시로는 POS데이터 / 카드데이터 / 코스피지수판매량 / 관광객수 등이 있습니다. 당연히 자료를 수집하는 주기에 따라 데이터의 값이 바뀝니다. 

 

 

분류하자면, 관측시점들의 간격이 규칙적인 경우와 불규칙적인 경우로 나눌 수 있습니다.

 

• 규칙적인 경우 : 일별, 월별, 분기별, 년도별 -> 반복된 패턴 모형화 가능 : 추세, 순환 계절패턴

 불규칙적인 경우 : POS 구매자료 / 일일 코스피 지수 / 월별 코스피 지수 -> 주기가 일정한 시계열로 바꿔서 모형화

 

 

시계열 데이터는 분석에 앞서 몇가지 확인사항이 있습니다.

 

 frquency를 먼저 확인해야 함

 주기가 불규칙한 시계열 데이터 -> 데이터를 조절해서 주기를 맞춰준 후 모델링 수행

 시계열 분석 전에 반드시 모든 변수들의 주기를 맞춰줘야 함

 

 시계열 데이터 처리 전에 time plot을 그려서 주기성을 먼저 파악

 plot 결과를 바탕으로 모델링 방법이 정해짐

 

 년도별 데이터의 경우 계절성 역시 파악 가능

 Daily 데이터의 경우 변동이 굉장히 많기 때문에 파악이 중요

 

 


🕑 is.ts( ) 함수

 

R에서는 몇 가지 시계열 데이터를 제공하는데요, time series data를 줄여서 ts 데이터라고 합니다. 

먼저 R 내부의 ts data인 AirPassangers를 가지고 몇 가지 정보를 알아보겠습니다.

 

## AirPassangers
## R 내부 ts 
## ts Data에만 적용되는 함수가 존재함
## 만약 ts DData가 아니라면, 이를 바꾸는 과정이 필요함

AirPassengers
>>

##      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432

 

 

사용할 데이터가 ts 데이터인지 확인하기 위해 is.ts( ) 함수를 사용합니다.

## ts Data 확인
is.ts(AirPassengers)
>> [1] TRUE

 

 

또는, class( ) 함수를 사용해서 클래스를 알아볼 수도 있습니다.

class(AirPassengers)
>> [1] "ts"

 

 

시계열 데이터에서는 앞서 언급했듯이 측정 주기가 중요합니다.

또한, 데이터의 수집 시작 날짜와 마지막 날짜 역시 중요합니다.

이를 위해 frequency( ), start( ), end( ) 함수를 제공합니다.

## 주기 / 시작점 / 끝점 파악
## 12 -> 월별 데이터임을 의미함

frequency(AirPassengers)
start(AirPassengers)
end(AirPassengers)
>> [1] 12  
>> [1] 1949    1  
>> [1] 1960   12