Math & Statistics/Forecasting: Principles and Practice

챕터2. 연습문제

corycory 2022. 2. 5. 15:55
728x90
반응형
Forecasting: Principles and Practice 2nd Edition을 공부한 내용을 기록, 정리하고 있습니다. 

 

 

2.10 연습문제

1. gold, woolyrnq, gas 시계열 살펴보기

a. autoplot()으로 각각 그래프 그려보기

gold

 

woolrynq

 

gas

 

 

b. frequency()를 사용해 주기 확인해보기

 

> frequency(gold)
[1] 1
> frequency(woolyrnq)
[1] 4
> frequency(gas)
[1] 12

 

c. which.max()로 gold()에서 튀는 시계열 값 찾기

위 시계열 에서 갑자기 위로 솟는 부분의 값.

> which.max(gold)
[1] 770

 

2. 책 웹사이트에서 tute1.csv 파일 내려받아 열어보기.

a. 데이터를 R로 읽어오기

r에서 다운받은 데이터 열어보는 방법은 아래 스샷처럼 메뉴바에서 Misc를 찾아 working directory를 확인하는 것이다. R이 현재 작업하고 있는 디렉토리이며, 내 경우는 Users/사용자 폴더였다. (이미 알고 있다면 스킵해도 된다)

Working Directory 확인

 

다운 받은 파일은 Users/사용자의 하위 폴더인 Downloads 폴더에 있다. 그러면 이미 디렉토리는 Users/사용자까지 들어가 있으니 아래 코드처럼 불러와주면 된다.

> tute1 <- read.csv("Downloads/tute1.csv", header=TRUE)

 

b. 데이터를 시계열 형태로 바꿔보기

c. 각 시계열을 시간 그래프로 나타내보기

facets=TRUE

 

facets=TRUE 옵션 제거 후

 

 

3. 호주 월별 소매데이터를 웹사이트에서 받기.

여기서 교과서에 쓰인대로 해당 데이터를 불러오려고 readxl을 쓰면 해당 함수가 없다는 에러가 뜰 수 있다. 먼저 readxl, cellranger 패키지를 설치해 주자.

 

autoplot()

 

ggseasonplot()

 

 

ggsubserieseplot()

 

lagplot()

 

ggAcf()

 

12개월 주기로 12월에 매출이 증가하는 계절성이 있고, 시간이 갈수록 소비금액이 점점 증가하는 추세가 있습니다.

 

4. bicoal, chicken, dole, usdeaths, lynx, goog, writing, fancy, a10, h02의 시간 그래프 그려보기

데이터가 많아서 4개씩 묶어 그렸는데, 찾아보니 patchwork라는 패키지를 쓰면 묶어 그릴 수 있다. 

> library(patchwork)
> p1 <- autoplot(bicoal)
> p2 <- autoplot(chicken)
> p3 <- autoplot(dole)
> p4 <- autoplot(usdeaths)
> p1 + p2 + p3 + p4

 

플롯이 너무 많아져서 한번에 4개씩 묶어 그림

 

여기도 나머지 플롯을 한꺼번에 묶어 그림

goog 데이터의 그래프 축 라벨과 제목을 바꿔보라고 과제가 나왔다. 

autoplot(goog) + ylab("count") + ggtitle("goog plot title change")

y축이랑 제목 바꿔보기 완.

그 외 다른 그래프 옵션은 autoplot 상세 페이지를 보면 될듯.

https://www.rdocumentation.org/packages/survMisc/versions/0.4.2/topics/autoplot

 

autoplot function - RDocumentation

plotTable Add table below plot. This contains one row for each time increment for each strata, giving the number at risk at that time.

www.rdocumentation.org

 

 

5. ggseasonplot(), ggsubserieseplot()

writing의 경우 매년 8월 급격하게 줄어든다. 해가 갈수록 증가하는 트렌트가 있다. fancy 의 경우 연말인 11~12월마다 매출이 증가하고 있다. 해가 갈수록 줄어드는 트렌드이며, 1989년에 급격하게 줄어들었다. 

writing, fancy의 seasonal plot

 

아래 a10 그래프를 보면 2-3월에 줄어드는 계절성이 있으며 해가 갈수록 증가하는 트렌드이다. 2005년 9월에 예외적으로 감소 기록이 있다. h02 그래프의 경우 2월에 급감했다 연말로 갈수록 서서히 오르는 계절성이 있다. 2005, 2007년은 특이하게 2월이 아니라 3, 4월에 급감한 기록이 있다. 

a10, h02의 seasonal plot

 

6. hsales, usdeaths, bricksq, sunspotarea, gasoline 보기

## 사용한 코드 ##
> brick1 <- autoplot(bricksq)
> brick2 <- ggseasonplot(bricksq)
> brick3 <- ggsubseriesplot(bricksq)
> brick4 <- gglagplot(bricksq)
> brick5 <- ggAcf(bricksq)
> brick1 + brick3 + brick5
> brick2 + brick4

 

먼저 hsales를 본다. 1년 안에 데이터가 오르내리는 계절성도 있고, autoplot에서 보이는 것처럼 대략 10년치의 장기적 주기도 보인다. 

autoplot, ggsubseriesplot, ggAcf

 

아래 seasonal 플롯과 lag plot을 보면 2~4월에 세일즈가 증가하는 계절성이 있습니다.

ggseasonplot, gglagplot

 

다음은 usdeaths 데이터.

1년 정도의 주기의 계절성이 보이며, 여름에 증가하는 모습입니다. 특별한 장기적인 추세나 다른 주기는 보이지 않습니다.

autoplot, ggsubseriesplot, ACF

 

아래 계절성 그래프와 시차 그래프를 보면 계절성이 더 뚜렷하게 보인다. 5월에서 8월 사이 사망률이 올라가는 모습이다.

 

seasonal plot, lagged scatterplot

 

bricksq 살펴보기

분기별 계절성이 보입니다. 추세는 1980년까지 쭉 상승했지만, 그 이후부터는 현상유지가 되고 있습니다.

autoplot, sub series plot, ACF

 

계절성 플롯을 보면, 2분기와 3분기에 증가하는 모습입니다.

 

seasonal plot, lag plot

 

 

반응형