당신은 주제를 찾고 있습니까 “r 시계열 분석 – 통계데이터분석 – 시계열분석 – 시계열 데이터 🔑 time series analysis | 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터 | 주기“? 다음 카테고리의 웹사이트 https://you.tfvp.org 에서 귀하의 모든 질문에 답변해 드립니다: https://you.tfvp.org/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 곽기영 이(가) 작성한 기사에는 조회수 8,682회 및 좋아요 105개 개의 좋아요가 있습니다.
r 시계열 분석 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 통계데이터분석 – 시계열분석 – 시계열 데이터 🔑 time series analysis | 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터 | 주기 – r 시계열 분석 주제에 대한 세부정보를 참조하세요
[R을 이용한 통계데이터분석]시계열분석(time series analysis)은 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터(시계열 데이터)를 바탕으로 미래의 관측값을 예측(forecasting)하는 분석 기법입니다. 시계열은 어떠한 사건에 관한 시간적 변화를 나타내므로 어느 한 시점에서의 관측값은 그 이전까지의 관측값에 의존하게 됩니다. 따라서 시계열분석에서는 과거의 일련의 관측값을 분석하여 이를 모델링하고, 이 예측모델을 바탕으로 미래의 관측값을 예측합니다. 다음과 같은 함수에 대한 설명이 포함되어 있습니다: ts(), plot(), start(), end(), frequency(), deltat(), time(), cycle(), window().r 시계열 분석 주제에 대한 자세한 내용은 여기를 참조하세요.
[R] 시계열 분석(Timeseries Analysis)
[R] 시계열 분석(Timeseries Analysis) … 시계열 분석 적용 범위 … 실제 시계열자료에서 추세, 순환, 계절 요인을 뺀 결과(회귀분석 오차).Source: kerpect.tistory.com
Date Published: 3/28/2022
View: 3531
R 시계열분석 Time Series ARIMA
R 시계열분석 Time Series ARIMA … 시계열 모형 (1) 자기회귀 모형 (Autoregressive model, AR) P 시점 이전의 자료가 현재 자료에 … R functions for TimeSeries
Source: woosa7.github.io
Date Published: 1/27/2021
View: 9438
[ADP] R로 하는 시계열 분석 실습(분해시계열, ARIMA)
[ADP] R로 하는 시계열 분석 실습(분해시계열, ARIMA). SuHawn 2020. 7. 18. 15:21. 이번 게시글에서는 R을 활용한 실습만 진행한다. 시계열 모형들에 대한 자세한 …Source: todayisbetterthanyesterday.tistory.com
Date Published: 11/26/2022
View: 2685
[ADP 실기 준비] R 시계열 분석 – 토르규’s Data Story
R을 활용한 시계열 분석하기. R에서 시계열 분석을 하는 순서는 다음과 같다. 1) 시계열 자료를 시각화하여 정상성 시계열인지 확인한다 …
Source: ckmoong.tistory.com
Date Published: 11/29/2021
View: 5162
R ARIMA 시계열 분석
R ARIMA 시계열 분석. ASTSA 패키지를 활용. 1. R에서 제공하는 기본적 시계열. 1.1 시계열 자료 객체 생성하기. R에서 시계열 자료는 ts() 함수를 이용하여 객체를 …
Source: www.sangji.ac.kr
Date Published: 4/6/2022
View: 6633
(R)제29(02)_시계열분석 실습(R로 해 보는) – 통컨(통계컨설팅)
(R)제29(02)_시계열분석 실습(R로 해 보는). tongcon 2021. 12. 27. 06:50. 다음과 같은 데이터가 있습니다. 그냥(?) 60개의 데이터입니다.
Source: rsas.tistory.com
Date Published: 4/26/2022
View: 8571
R 응용 시계열분석 – YES24
이 책은 1 ~ 5부로 구성되었다. 1부에서는 시계열 자료의 탐색과 기초분석, 2부에서는 ARIMA 예측 모형과 주요 개념, 3부에서는 여러 시계열을 이용한 …
Source: www.yes24.com
Date Published: 7/28/2021
View: 1571
주제와 관련된 이미지 r 시계열 분석
주제와 관련된 더 많은 사진을 참조하십시오 통계데이터분석 – 시계열분석 – 시계열 데이터 🔑 time series analysis | 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터 | 주기. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 r 시계열 분석
- Author: 곽기영
- Views: 조회수 8,682회
- Likes: 좋아요 105개
- Date Published: 2020. 12. 16.
- Video Url link: https://www.youtube.com/watch?v=KSaok7u09wc
[R] 시계열 분석(Timeseries Analysis)
728×90
반응형
시계열 분석(Timeseries Analysis)
: 어떤 현상에 대해서 시간의 변화에 따라 일정한 간격으로 현상의 변화를 기록한 시계열 데이터를 대상으로 미래의 변화에 대한 추세를 분석하는 방법, 시간 경과에 따른 관측 값의 변화를 패턴으로 인식하여 시계열 모형을 추정하고, 이 모형을 통해서 미래의 변화에 대한 추세를 예측하는 분석방법입니다. (시계열 자료 – 시간의 흐름에 따라 관찰된 데이터)
– 과거로 부터 현재까지의 변화를 통해서 향후 미래를 예측 (현상 이해 -> 미래 예측)
시계열 자료 분류
① 정상성(stationary) 시계열
: 어떤 시계열자료의 변화 패턴이 평균값을 중심으로 일정한 변동폭을 갖는 시계열
(시간의 추이와 관계 없이 평균과 분산이 일정)
– 대부분의 시계열 자료는 다루기 어려운 비정상성 시계열 자료이기 때문에 분석하기 쉬운 정상성 시계열 자료로 변환
평균이 일정 : 모든 시점에 대해 일정한 평균을 가진다.
– 평균이 일정하지 않은 시계열은 차분(difference)을 통해 정상화
– 차분은 현시점 자료에서 이전 시점 자료를 빼는 것
– 일반차분 : 바로 전 시점의 자료를 빼는 것
– 계절차분 : 여러 시점 전의 자료를 빼는 것, 주로 계졀성을 갖는 자료를 정상화 하는데 상용
분산도 시점에 의존하지 않음
– 분산이 일정하지 않은 시계열은 변환(transformation)을 통해 정상화
공분산도 시차에만 의존하지 않음
② 비정상성 (non-stationary) 시계열
: 대부분 시계열자료
– 시간의 추이에 따라서 점진적으로 증가하는 추세
– 분산이 일정하지 않은 경우
시계열 분석 특징
① y변수 존재 : 시간 t를 설명변수(x)로 시계열(Yt)을 반응변수(y)로 사용
– 설명변수(=독립변수), 반응변수(=종속변수)
② 미래 추정 : 과거와 현재의 현상을 파악하고 이를 통해서 미래 추정
– 현상 이해 -> 미래 예측
③ 계절성 자료 : 시간 축을 기준으로 계절성이 있는 자료를 데이터 셋으로 이용
– 계절성의 자료가 내포
④ 모수 검정 : 선형성, 정규성, 등분산성 가정 만족
⑤ 추론 기능 : 유의수준 판단 기준이 존재하는 추론통계 방식
추론 통계 분석 : 가설설정 -> 유의수준 임계값 정의 -> 측정도구 결정 -> 데이터 수집 -> 데이터 분석
-> 최종결과 유의수준을 기준으로 판단 검증
추론통계 방식을 사용하는 이유 : 추론 통계의 접근 방식이 모집단을 대표하는 샘플 데이터를 통해 전체를 추정
⑥ 활용분야 : 경기예측, 판매예측, 주식시장분석, 예산 및 투자 분석, 교통수요 등
시계열 분석 적용 범위
① 기존 사실에 대한 결과 규명 : 주별, 월별, 분기별, 년도별 분석을 통해서 고객의 구매 패턴을 분석
② 시계열자료 특성 규명 : 시계열에 영향을 주는 일반적인 요소(추세, 계절, 순환, 불규칙)를 분해해서 분석한다.(시계열 요소 분해법)
③ 가까운 미래에 대한 시나리오 규명 : 탄소배출 억제를 성공 했을 때와 실패 했을 때 지구 온난화는 얼마나 심각해질 것인가를 분석한다.
④ 변수와 변수의 관계 규명 : 경기선행지수와 종합주가지수의 관계를 분석한다.(국가 경제와 주가지수 관계)
⑤ 변수 제어 결과 규명 : 입력 변수의 제어(조작)를 통해서 미래의 예측 결과를 통제할 수 있다.(판매 촉진에 영향을 주는 변수 값을 조작할 경우 판매에 어떠한 영향을 미치는가?)
시계열 데이터 특성
① 추세 변동(Trend variation: T)
– 인구 변동, 지각변동, 기술변화 등 상승과 하락의 영향(장기 변동요인) , 앞으로 나아갈 방향성
② 순환 변동(Cyclical variation: C)
– 2년~10년의 주기에서 일정한 기간 없는 반복적 요소(중․장기 변동요인)
③ 계절 변동(Seasonal variation: S)
– 일정한 기간(월, 요일, 분기), 1년 단위 반복적 요소(단기 변동요인)
④ 불규칙변동(Irregular variation: I)
– 어떤 규칙 없이 예측 불가능한 변동요인(설명할 수 없는 요인) – white noise
– 실제 시계열자료에서 추세, 순환, 계절 요인을 뺀 결과(회귀분석 오차)
시계열 분석 절차
정상성시계열로 변환
비정상 시계열 -> 정상성 시계열 : 평균 정상화 : 차분
비정상 시계열 -> 정상성 시계열 : 분산 정상화 : 로그 -> 차분
모형 생성 : 시계열 모형 생성의 대표적인 방법(현재 가장 많이 이용)
– 정상성을 가진 시계열 모형
자기회귀모형(AR), 이동평균모형(MA), 자기회귀이동평균모형(ARMA)
– 비정상성을 가진 시계열 모형(차수 적용)
자기회귀누적이동평균모형(ARIMA)
1. 시계열 자료 확인
비정상성 시계열 -> 정상성 시계열
① 데이터 셋 가져오기
data(“AirPassengers”) # 12년(1949~1960년)간 매월 항공기 탑승 승객 수를 기록한 시계열 자료. str(AirPassengers) 출력값 : Time-Series [1:144] from 1949 to 1961: 112 118 132 129 121 135 148 148 136 119 … View(AirPassengers)
< 승객 탑승 수 >
② 차분(Differencing) 적용 – 현재 시점에서 이전 시점의 자료를 빼는 연산으로 평균을 정상화하는데 이용 : 평균 정상화
x11() par(mfrow=c(1,2)) ts.plot(AirPassengers) – 비정상성 시계열 데이터 log <- diff(log(AirPassengers)) # 로그+차분 수행 plot(log) ts.plot( ) : 시계열 시각화 diff( ) : 차분 적용 비정상성의 시계열 데이터 -> 정상성의 시계열 데이터(차분+로그)
2. 시계열 자료 시각화
– 단일 시계열 자료 시각화
① WWWusage 데이터 셋 가져오기 – R에서 기본 제공 데이터 셋으로 인터넷 사용 시간을 분 단위로 측정한 100개 vector로 구성된 시계열 자료
data(“WWWusage”) str(WWWusage) # Time-Series [1:100] from 1 to 100: 출력값 : Time-Series [1:100] from 1 to 100: 88 84 85 85 84 85 83 85 88 89 … WWWusage
② 시계열 자료 추세선 시각화
– 추세 : 어떤 현상이 일정한 방향으로 나아가는 경향. 주식시장분석이나 판매예측등에서 어느 기간동안 같은 방향으로 움직이는 경향을 의미
– 추세선 : 추세를 직선이나 곡선 형태로 차트에서 나타내는 선(어느 정도 평균과 분산 확인 가능)
X11() ts.plot(WWWusage, type=”l”, col=”red”)
– 다중 시계열 자료 시각화
① 데이터 셋 가져오기
data(“EuStockMarkets”) # 유럽(1991~1998년)의 주요 주식의 주가지수 일일 마감 가격. head(EuStockMarkets) # DAX(독일) SMI(스위스) CAC(프랑스) FTSE(영국) – 출력값 – DAX SMI CAC FTSE [1,] 1628.75 1678.1 1772.8 2443.6 [2,] 1613.63 1688.5 1750.5 2460.2 [3,] 1606.51 1678.6 1718.0 2448.2 [4,] 1621.04 1684.1 1708.1 2470.4 [5,] 1618.16 1686.6 1723.1 2484.7 [6,] 1610.61 1671.6 1714.3 2466.8 str(EuStockMarkets) – 레코드 : 1860개 , 컬럼 4개 – 출력값 – Time-Series [1:1860, 1:4] from 1991 to 1999: 1629 1614 1607 1621 1618 … – attr(*, “dimnames”)=List of 2 ..$ : NULL ..$ : chr [1:4] “DAX” “SMI” “CAC” “FTSE”
② 데이터프레임으로 변환
EuStock <- data.frame(EuStockMarkets) head(EuStock) - 출력값 - DAX SMI CAC FTSE 1 1628.75 1678.1 1772.8 2443.6 2 1613.63 1688.5 1750.5 2460.2 3 1606.51 1678.6 1718.0 2448.2 4 1621.04 1684.1 1708.1 2470.4 5 1618.16 1686.6 1723.1 2484.7 6 1610.61 1671.6 1714.3 2466.8 ③ 단일 시계열 데이터 추세선 X11() plot(EuStock$DAX[1:1000], type = "l", col="red") # 선 그래프 시각화 - 1000개의 데이터를 먼저 가져와서 시각화 ④ 다중 시계열 데이터 추세선 plot.ts(cbind(EuStock$DAX[1:1000], EuStock$SMI[1:1000]), main="주가지수 추세선") 3. 시계열 요소 분해 시각화 시계열 요소 분해 시각화 ① 시계열 자료 준비 data <- c(45,56,45,43,69,75,58,59,66,64,62,65, 55,49,67,55,71,78,71,65,69,43,70,75, 56,56,65,55,82,85,75,77,77,69,79,89) length(data) 출력값 : 36 ② 시계열자료 생성 : 시계열 자료 형식으로 객체 생성 tsdata <- ts(data, start = c(2016, 1), frequency = 12) #시작 : 2016년 1월, 주기: 12 tsdata # 2016~2018 - 출력값 - Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2016 45 56 45 43 69 75 58 59 66 64 62 65 2017 55 49 67 55 71 78 71 65 69 43 70 75 2018 56 56 65 55 82 85 75 77 77 69 79 89 ③ 추세선 확인 par(mfrow=c(1,1)) ts.plot(tsdata) # plot(tsdata)와 동일함. ④ 시계열 분해- stl( ) : 계절요소, 추세, 잔차 등 모두 제공 plot(stl(tsdata, "periodic")) # periodic : 주기 각각의 특징을 시각화 하여 출력 -> 기본
-> 계절변동 (Seasonal variation: S)
– 1년 단위의 반복되어지는 특징을 가짐
-> 추세변동 (Trend variation: T))
– 증가
-> 잔차(오차) : 관측치와 예측치 사이의 오차
⑤ 시계열 분해와 변동 요인 제거
m <- decompose(tsdata) # decompose()함수 이용 시계열 분해 attributes(m) # 변수 보기 - 출력값 - $names [1] "x" "seasonal" "trend" "random" "figure" "type" $class [1] "decomposed.ts plot(m) # 추세요인, 계절요인, 불규칙 요인이 포함된 그래프. -> 기본 데이터 셋
-> 추세 요인
-> 계절 요인(년단위 주기의 특징)
-> 불규칙(white noise)
plot(tsdata – m$seasonal) # 계절요인을 제거한 그래프.
– 계절요인 제거한 추세선
⑥ 추세요인과 불규칙요인 제거
plot(tsdata – m$trend) # 추세요인 제거 그래프
plot(tsdata – m$seasonal – m$trend) # 불규칙 요인만 출력.
4. 자기 상관 함수/ 부분 자기 상관 함수
자기상관함수(Auto Correlation Function)
부분자기상관함수(Partial Auto Correlation Function)
– 자기상관성 : 자기 상관계수가 유의미한가를 나타내는 특성
– 자기상관계수 : 시계열 자료에서 시차(lag)를 일정하게 주는 경우 얻어지는 상관 계수
– 시계열 변수의 시간에 따른 자기 상관 관계를 나타내는 것입니다. 계열 상관, 교차자기 상관이라고도 합니다. 상관이 특정 시간에 대한 변수간의 상관관계라면, 자기상관은 시간의 변화에 따른 변수 간의 상관관계 변화가 주 관심사입니다.
어떤 시계열 데이터가 일정한 패턴을 본인다면, 자기 상관이 있따는 것을 뜻합니다. 시간에 따라 변수의 값이 자기상관성을 가지고 변화하므로, 무작위가 아닌 일정한 패턴을 보여준다고 할 수 있습니다.
– 자기 상관을 어떻게 활용할 수 있을까요? 바로 데이터의 무작위성을 파악할 수 있습니다.
자기상관 데이터가 ( – )에 가까울 수록, 무작위성이 있는 시계열 데이터로 판단할 수 있습니다. 0보다 큰값을 가질수록 자기상관을 강하게 가진다고 할 수 있습니다.
① 시계열자료 생성
input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700) length(input) 출력값 : 12 tsdata <- ts(input, start = c(2015, 2), frequency = 12) # Time Series tsdata - 출력값 - Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2015 3180 3000 3200 3100 3300 3200 3400 3550 3200 3400 3300 2016 3700 ② 자기상관함수 시각화 acf(na.omit(tsdata), main="자기상관함수", col="red") - 첫번째의 값은 자기 자신과의 관계이므로 1이 나올 수 밖에 없다. - 파란선(임계치) 안에 들어오면 자기상관계에 의해서 데이터셋 자체는 자기 상관성과 관련해서 자기상관성이 없음을 보여준다. - 일정주기로 체크해봤을 때, 자기상관성이 없다. ③ 부분자기상관함수 시각화 pacf(na.omit(tsdata), main="부분자기상관함수", col="red") 파란색 안에 들어오면 자기상관성이 없음. 시계열 데이터 시간의 의존성 여부가 무작위성을 띄느냐 띄지 않느냐를 자기상관함수로 판단할 수 있다. 무작위성을 띈다는 것은 random을 의미하고, 무작위성이 있다는 것을 이야기하고, 파란선(임계치)를 넘어가는 것을 의미한다. 5. 추세 패턴 찾기 시각화 추세패턴 :시계열 자료가 증가 또는 감소하는 경향이 있는지 알아보고, 증가나 감소의 경향이 선형인지 비선형인지를 찾는 과정 - 시계열 자료의 추세 패턴 찾기 시각화 ① 시계열 자료 생성 input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700) # Time Series tsdata <- ts(input, start = c(2015, 2), frequency = 12) ② 추세선 시각 plot(tsdata, type="l", col="red") ③ 자기상관 함수 시각화 acf(na.omit(tsdata), main="자기상관함수", col="red") ④ 차분 시각화 plot(diff(tsdata, differences=1)) 6. 평활법(Smoothing Method) : 수학/통계적 방법의 분석이 아닌 시각화를 통한 직관적 방법의 데이터 분석 방법 - 해석에 있어서 차이점이 발생할 수 있고, 주관적인 개입이 발생할 수 있다. - 단기 예측용으로, 1개(일변량) - 시계열 자료의 체계적인 자료의 흐름을 파악하기 위해서 과거 자료의 불규칙적인 변동을 제거하는 방법 (불규칙성의 배제) - 이동 평균(Moving Average - ma) : 시계열 자료를 대상으로 일정한 기간의 자료를 평균으로 계산하고, 이동 시킨 추세를 파악하여 추세를 예측하는 분석 기법 - 지수 평활법 : 전체 데이터를 평균을 계산하고, 전체 평균에 가장 최근의 값을 기준으로 일정 가정치를 부여해 가면서 추적해가는 분석 기법 (최근 데이터의 비중이 높음) 이동 평균 vs 지수 평활법 - 모든 관측치에 동일한 가중치를 부여하여 이동평균법은 최근 관측치나 오래된 관측치나 동일한 가중치를 사용하므로 정보를 동리하게 이용하는 단점이 잇고 과거 추세 패턴을 인지함 - 최근 관측치에 가중치, 멀어질수록 지수적으로 가중치 값 감소시키는 방법인 미래 예측에 사용. ① 시계열 자료 생성 data <- c(45,56,45,43,69,75,58,59,66,64,62,65, 55,49,67,55,71,78,71,65,69,43,70,75, 56,56,65,55,82,85,75,77,77,69,79,89) length(data) 출력값 : 36 tsdata <- ts(data, start = c(2016, 1), frequency = 12) tsdata - 출력값 - Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2016 45 56 45 43 69 75 58 59 66 64 62 65 2017 55 49 67 55 71 78 71 65 69 43 70 75 2018 56 56 65 55 82 85 75 77 77 69 79 89 ② 평활 관련 패키지 설치 install.packages("TTR") library(TTR) ③ 이동평균법으로 평활 및 시각화 plot(tsdata, main="원 시계열 자료") # 시계열 자료 시각화 plot(SMA(tsdata, n=1), main="1년 단위 이동평균법으로 평활") plot(SMA(tsdata, n=2), main="2년 단위 이동평균법으로 평활") plot(SMA(tsdata, n=3), main="3년 단위 이동평균법으로 평활") - 1년 단위 : 거의 그대로 유지 - 2년 단위 : 급격한 변화들이 완만한 형태의 추세선으로 변화 - 3년 단위 : 확연히 차이가 나도록 완만한 형태의 추세선으로 변화 (불규칙성의 배제로 인한 완만하게 평균적 의미로 파악) 7. ARIMA(Auto-regressive Integrated Moving Average) 모형 시계열 예측 : ARIMA 모델은 시계열 분석 기법의 한 종류로, 과거의 관측값과 오차를 사용해서 현재의 시계열 값을 설명하는 ARMA 모델을 일반화 한 것입니다. 이는 ARMA 모델이 안정적 시계열(Stationary Series)에만 적용 가능한 것에 비해, 분석 대상이 약간은 비안정적 시계열(Non Stationary Series)의 특징을 보여도 적용이 가능하다는 의미입니다. - 자기회귀누적이동평균모형(ARIMA) - 형식) ARIMA(p, d, q) : 3개의 인수 - p : AR모형 차수, d : 차분 차수, q : MA모형 차수 [ARIMA(p,d,q) 모형 → 정상성 시계열 모형 식별] d=0이면, ARMA(p, q)모형이며, 정상성을 만족한다. q=0이면 IAR(p, d)모형이며, d번 차분하면 AR(p) 모형을 따른다. p=0이면 IMA(d, q)모형이며, d번 차분하면 MA(q) 모형을 따른다. 정상성시계열의 비계절형 ① 시계열자료 특성분석 데이터 준비 input <- c(3180,3000,3200,3100,3300,3200,3400,3550,3200,3400,3300,3700) 시계열 객체 생성(12개월:2015년 2월 ~ 2016년 1월) tsdata <- ts(input, start = c(2015, 2), frequency = 12) tsdata - 출력값 - Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2015 3180 3000 3200 3100 3300 3200 3400 3550 3200 3400 3300 2016 3700 추세선 시각화(정상성시계열 vs 비정상성시계열) plot(tsdata, type="l", col='red') ② 정상성시계열 변환 par(mfrow=c(1,2)) ts.plot(tsdata) diff <- diff(tsdata) plot(diff) ③ 모형 식별과 추정 install.packages('forecast') library(forecast) arima <- auto.arima(tsdata) # 시계열 데이터 이용. arima auto.arima( ) : 통계학에서 정의하는 모형을 제공(모형에 대한 식별) - 모형과 차수 제공 형식) ARIMA(p, d, q) : 3개의 인수 p : AR모형 차수, d : 차분 차수, q : MA모형 차수 [ARIMA(p,d,q) 모형 → 정상성 시계열 모형 식별] d=0이면, ARMA(p, q)모형이며, 정상성을 만족한다. q=0이면 IAR(p, d)모형이며, d번 차분하면 AR(p) 모형을 따른다. p=0이면 IMA(d, q)모형이며, d번 차분하면 MA(q) 모형을 따른다. = ARIMA(1,1,0) - IAR(p, d)모형, d번 차분하면 AR(p) 모형을 따른다. (*차분을 한번만 한다고 균일한 값을 찾아가는 것이 아니다) 결론 : 1번 차분한 결과가 정상성시계열의 AR(1) 모형으로 식별된 AIC(Akaike’s Information Criterion)/BIC(Bayesian Information Criterion) : 이론적 예측력을 나타내는 지표 (값이 적은 모형 채택) ④ 예측을 위한 모형 생성 - 이전 단계에서 식별된 모형과 파라미터를 이용하여 시계열 모형 생성 model <- arima(tsdata, order=c(1,1,0)) model ⑤ 모형 진단(모형 타당성 검정) 잔차가 백색 잡음(white noise) 검정(모형의 잔차가 불규칙적이고, 독립적) - 1) 자기상관함수에 의한 모형 진단 tsdiag(model) -> 자기상관함수
모두 파란선(임계치) 안에 들어있음
= 자기 상관관계가 없음
= 규칙성이 없음 = 불규칙성
= p value값이 0 이상로 분포
(ARIMA모형은 매우 양호한 시계열 모형)
= 모델 적합
– 2) Box-Ljung에 의한 잔차항 모형 진단(잔차 값을 통한 모형)
Box.test(model$residuals, lag = 1, type = “Ljung”)
Box-Ljung 검정방법은 모형의 잔차를 이용하여 카이제곱검정 방법으로 시계열 모형이 통계적으로 적절한지를 검정하는 방법으로 p-value가 0.05 이상이면 모형이 통계적으로 적절하다고 볼 수 있습니다.
p-value = 0.7252 > 0.05 모델 적합 (모형이 통계적으로 적절)
⑥ 미래 예측(업무 적용)
– 모형 진단을 통해서 적절한 모형으로 판단되면 이 모형으로 가까운 미래를 예측하는데 이용
– forecast 패키지에서 제공하는 forecast() 함수는 시계열의 예측치를 제공하는 함수로 기본 기간은 2년(24개월)
fore <- forecast(model) # 향후 2년 예측 fore par(mfrow=c(1,2)) plot(fore) # 향후 24개월 예측치 시각화 model2 <- forecast(model, h = 6) # 향후 6개월 예측치 시각화 plot(model2) 8. 정상성 시계열의 계절형 ① 시계열자료 특성분석 1) 시계열자료 생성 Aripassengers - # 12년(1949~1960년)간 매월 항공기 탑승 승객 수를 기록한 시계열 자료. tsdata <- AirPassengers tsdata - 측정값 - 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 2) 시계열요소분해 시각화 ts_feature <- stl(tsdata, s.window="periodic") plot(ts_feature) -> 계절 요인
-> 추세 요인
-> 잔차
② 정상성 시계열 변환
par(mfrow=c(1,2)) ts.plot(tsdata) diff <- diff(tsdata) # 평균값으로 정상화 plot(diff) # 차분 시각화 ③ 모형 식별과 추정 library(forecast) ts_model2 <- auto.arima(tsdata) ts_model2 # ARIMA(2,1,1)(0,1,0)[12] [ARIMA(p,d,q) 모형 → 정상성 시계열 모형 식별] d=0이면, ARMA(p, q)모형이며, 정상성을 만족한다. q=0이면 IAR(p, d)모형이며, d번 차분하면 AR(p) 모형을 따른다. p=0이면 IMA(d, q)모형이며, d번 차분하면 MA(q) 모형을 따른다. ④ 모형 생성 model <- arima(tsdata, c(2,1,1), seasonal = list(order = c(0,1,0))) model ⑤ 모형 진단(모형 타당성 검정) 1) 자기상관함수에 의한 모형 진단 tsdiag(model) -> 자기상관함수
모두 파란선(임계치) 안에 들어있음
= 자기 상관관계가 없음
= 규칙성이 없음 = 불규칙성
= p value값이 0 이상로 분포
(ARIMA모형은 매우 양호한 시계열 모형)
= 모델 적합
2) Box-Ljung에 의한 잔차항 모형 진단
Box-Ljung 검정방법은 모형의 잔차를 이용하여 카이제곱검정 방법으로 시계열 모형이 통계적으로 적절한지를 검정하는 방법으로 p-value가 0.05 이상이면 모형이 통계적으로 적절하다고 볼 수 있습니다.
p-value = 0.9879 > 0.05 모델 적합 (모형이 통계적으로 적절)
⑥ 미래 예측
– 모형 진단을 통해서 적절한 모형으로 판단되면 이 모형으로 가까운 미래를 예측하는데 이용
– forecast 패키지에서 제공하는 forecast() 함수는 시계열의 예측치를 제공하는 함수로 기본 기간은 2년(24개월)
par(mfrow=c(1,2)) fore <- forecast(model, h=24) # 2년 예측 plot(fore) fore2 <- forecast(model, h=6) # 6개월 예측 plot(fore2) 728x90 반응형
[ADP] R로 하는 시계열 분석 실습(분해시계열, ARIMA)
이번 게시글에서는 R을 활용한 실습만 진행한다. 시계열 모형들에 대한 자세한 내용은 아래 링크를 통해서 학습하길 바란다.
https://todayisbetterthanyesterday.tistory.com/36
시계열 분석
실습은 특성이 다른 두 가지 데이터를 가지고 비교하면서 진행하겠다. 첫 번째 데이터는 나일강 연간 유입량에 관한 데이터이며 두 번째 데이터는 영국내 월별 사망자 데이터이다. 두 데이터 모두 R에 기본적으로 내장되어있는 데이터로 데이터 자체가 timeseries로 구성되어있다. 일반데이터를 시계열자료 형식으로 변환하기 위해서는 ts함수를 사용해서 시계열 자료 형식으로 변환 후 분석을 진행하면 된다.
데이터 불러오기
# 나일강 연간 유입량 데이터 Nile
# 영국 내의 월별 폐질환 사망자 데이터 ldeaths
데이터를 표로 보면 추세나 흐름이 잘 보이지 않는다. 그렇기에 도식화를 통한 그림으로 살펴보자
Plot 고찰하기
# 나일강 연간 유입량 데이터 plot(Nile)
나일강 데이터를 먼저 살펴보면 규칙적인 계절성이 띄는 것 같아 보이지 않는다. 하지만, 평균이 변화하는 추세는 약간 보이는 듯 하다. 그렇기에 정상성을 만족하지 못한다.
# 영국 내의 월별 폐질환 사망자 데이터 plot(ldeaths)
나일강 데이터와 달리 영국 내 폐질환 사망자 데이터는 년도별로 명확한 계절성이 띄는 것으로 보인다. 매년 일정 주기별 사망자의 수가 증가했다가 감소하는 것을 반복한다. 자세히 보면 년도별 3,4 분기에 급격하게 증가했다가, 1,2분기에 급격하게 감소하는 것처럼 보인다. 분해 시계열에서 다루고자 하는 시계열 데이터의 요소는 추세요인/계절요인/순환요인/불규칙요인이 있다. 그 중에서 계절요인이 어느정도 명확하니 분해 시계열을 통해서 다루어보자.
ldeaths 데이터 – 분해 시계열
# 계절요인 분해시계열 ldeaths.decompose <- decompose(ldeaths) # 데이터에서 4가지 요인을 분해시키는 함수 ldeaths.decompose$seasonal # 계절요인으로 분해된 부분이다. R에서 decompose(ts)함수를 사용하면 4가지 요인으로 분해를 시켜준다. view(decompose(ts))를 사용해서 변수를 확인하면 seasonal / trend / random / observed 컬럼이 생겨난 list를 확인할 수 있다. # 4가지 요인을 도식화로 살펴보자 plot(ldeaths.decompose) 위와같이 그림을 그리면 추세요인, 계절요인, 불규칙요인으로 분해된 시계열 자료에 대한 그림을 그릴 수 있다. 게다가 특정 요인이 있다고 판단될 경우, 원 시계열자료에서 해당하는 특정요인을 빼면 적절한 조정이 가능하다. # 계절요인 제외시키기 ldeaths.decompose.adj <- ldeaths - ldeaths.decompose$seasonal plot(ldeaths.decompose.adj) 이제 계절요인을 제거한 시계열 자료를 얻게 된 것을 확인할 수 있다. Nile 데이터 - ARIMA모형 앞에서 Nile 데이터에서 추세가 존재하는 것으로 보여(평균이 일정하지 않아) 정상성을 위배한다고 언급했다. 그렇기에 ARIMA모형을 통해서 비정상 시계열을 다루는 과정을 진행해보자. 맨 위에 걸어놓은 링크를 통해서 보면 평균이 일정하지 않은 비정상시계열의 경우는 차분을 통해서 비정상성을 해결한다. 그리고 분산이 일정하지 않은 시계열의 경우는 변환을 통해서 비정상성을 해결한다. Nile의 경우는 평균이 일정하지 않는 것만 일차적으로 확인이 되기에 차분을 진행하여 ARIMA모형 분석을 진행하겠다. # 1회 차분 Nile.diff_1 <- diff(Nile, differences = 1) plot(Nile.diff_1) R에서 차분은 diff함수를 통해서 정할 수 있다. diff(ts, differences = d-횟수)를 사용하면, 원하는 d만큼 차분이 가능하다. 1번 차분을 한 결과 원 데이터보다는 평균이 일정해진 것처럼 보인다. 하지만 명확하지 않다. 한번 더 해보자 # 2회 차분 Nile.diff_2 <- diff(Nile, differences = 2) plot(Nile.diff_2) 차분을 2회 진행하니 1회 진행한 것보다도 평균과 분산이 시간이 지남에 따라서 일정한 정상성을 띄는 것을 확인할 수 있다. 이제 이 차분을 진행한 데이터 Nile.diff_2를 사용하여 자기상관함수와 부분자기상관함수를 통해서 AR/MA 모형의 여부를 살펴보자 # 자기상관함수 그래프 acf(Nile.diff_2, lag.max=20) # 자기상관함수 도표 acf(Nile.diff_2, lag.max=20, plot = FALSE) acf 함수의 lag의 개수는 20개로 정했다. lag개수가 너무 많아지면 자기상관함수 그래프를 보고 모형식별을 판단하기가 힘들어지기 때문에 적절한 값의 선택이 중요하다. 위의 결과를 보면 1번째와 8번째 lag를 제외하고는 모두 신뢰구간안에 포함되어 있다. 그리고 acf함수와 pacf함수 모두 plot = FALSE 매개변수를 통해서 도식화되지 않은 수치로 확인해볼 수 있다. 이제 부분자기상관함수를 확인해보자. # 부분자기상관함수 그래프 pacf(Nile.diff_2, lag.max=20) # 부분자기상관함수 도표 pacf(Nile.diff_2, lag.max=20, plot = FALSE) 부분자기상관함수는 pacf함수를 통해서 확인할 수 있다. 사용방법은 acf와 동일하다. 부분자기상관함수는 lag 1~8신뢰구간을 넘어 음의 값을 가지고 lag 9에서 절단이 된 것을 확인할 수 있다. 자기상관함수(ACF)와 부분자기상관함수(PACF)를 확인해 본 결과, - ARMA(8,0) 부분자기상관함수 그래프를 볼 때, lag 9에서 절단 - ARMA(0,1) 자기상관함수 그래프에서 lag 2에서 절단 위의 결과처럼 단순 AR or MA로 모형을 나누기엔 결정하기가 좀 힘들다. 이처럼 어떤 모형을 선택해야할 지는 쉽지 않은 문제이다. ARMA(p,q)에서는 AR모형과 MA 모형을 혼합하여 모형을 식별하고 결정할 필요가 있다. 만약 모수가 많다면 설명력은 커질 것이다. 하지만 모형이 복잡하고 이해하기는 더 어려워진다. 그렇다고 모수가 너무 적으면 모형이 단순해서 이해력은 높아지나 설명력이 낮아질 수 밖에 없다. 그렇기에 항상 Trade-Off는 존재한다. forecast 패키지의 auto.arima 함수 & 예측 R에는 이러한 결정하기 힘든 ARIMA모형을 스스로 결정해주는 함수가 존재한다. 바로 forecast패키지에 존재하는 auto.arima함수이다. 간단한 실습을 통해 알아보자. #forecast packages install.packages("forecast") library(forecast) #auto.arima function auto.arima(Nile) 위의 결과를 보면 자동적으로 ARIMA(1,1,1)을 선택한 것을 볼 수 있다. 이제 이를 이용하여 미래의 수치값을 예측해보자. #arima 결과 1,1,1 대입 Nile.arima <- arima(Nile, order=c(1,1,1)) Nile.arima #arima 결과를 활용한 forecast 예측 Nile.forecast <- forecast(Nile.arima, h = 10) Nile.forecast 결정된 ARIMA모형을 가지고 forecast 패키지의 forecast함수를 통해 미래의 수치값을 예측한 것이다. h=10은 10개년도를 예측한다는 뜻이다. 예측은 범위값으로 나온다. 그림을 통해보면 아래와 같다. #arima 결과를 활용한 forecast 예측 plot(Nile.forecast) 진한 파란선이 점추정과 같은 회귀선이고 가장 높은 옅은 파란 영역(80%)과 회색영역(95%)이 신뢰구간인 구간예측값이다.
[ADP 실기 준비] R 시계열 분석
반응형
ADP 실기 실습 / 기출 문제 / 시계열 분석 / ARIMA
12월 13일에 있을 ADP 실기를 준비하기 위해,
우선은 인터넷상의 실기 후기들을 수집 중이다.
얼마 전 18회에 등장한 시계열 분석 기출문제를 참고하여 간단한 예제로 실습해보려 한다.
제 18회 ADP 기출문제
계절성 시계열 분석문제
(데이터구성 : Year/month/amount)
– 정상성 확인 (10점)
– ARIMA모델 3가지 제시 (10점)
– 한가지 모델을 최종 선택하고 이유를 서술 (15점)
– 최종 예측을 하고, 실제 결과와 비교 평가하고 그 평가 방법을 사용한 이유를 제시 (15점)
시계열 자료란?
시간의 흐름에 따라 관찰된 값들을 시계열 자료라 한다.
시계열 분석을 통해 미래의 값을 예측하고 경향, 주기, 계절성 등을 파악하여 활용한다.
시계열 분석을 위해서는 기본적으로 아래의 정상성(Stationary)를 만족해야 한다.
– 평균이 일정하다.
– 분산이 시점에 의존하지 않는다.
– 공분산은 단지 시차에만 의존하고, 시점 자체에는 의존하지 않는다.
위 3가지 조건 중 하나라도 만족하지 못한다면, 비정상 시계열이라고 부른다.
실제 현실의 시계열 데이터는 비정상 시계열이 대부분이며,
비정상성 시계열 자료는
1. 평균이 일정하지 않다면(추세가 존재) “차분(Difference)” 을 통해
2. 분산이 일정하지 않다면 “변환(Transformation)”을 통해
가공하여 정상 시계열 자료로 만들어 줘야한다.
R을 활용한 시계열 분석하기
R에서 시계열 분석을 하는 순서는 다음과 같다.
1) 시계열 자료를 시각화하여 정상성 시계열인지 확인한다.
2) 시계열 자료를 정상성 시계열로 변환한다.
3) ACF/PACF 차트나 auto.arima 함수를 사용하여 최적화된 파라미터를 찾는다.
4) ARIMA 모형을 만든다.
5) 미래 추이를 예측한다.
예제 실습
예제 데이터는 1946년 1월부터 1959년 12월까지 뉴욕의 월별 출생자수 데이터를 scan함수로 불러와 활용한다.
먼저, 시계열 분석을 위해서는 Time-Series 객체가 필요하다.
숫자를 담고 있는 벡터를 Time-Series 객체로 변환하려면 ts (대상 벡터) 함수를 사용하면 된다.
install.packages(“TTR”)
install.packages(“forecast”)
install.packages(“tseries”)
library(TTR)
library(forecast)
library(tseries)
data <- scan("http://robjhyndman.com/tsdldata/data/nybirths.dat") birth <- ts(data, frequency = 12, start = c(1946, 1)) #숫자벡터를 Time-Series 객체로 변환 1) 데이터 정상성 확인 시계열 자료를 plot 명령어로 시각화하여 정상성 시계열인지 간단히 확인한다. plot.ts(birth, main = "뉴욕 월별출생자 수" ) 시각화 결과, 시간에 따라 평균과 분산이 증가하는 경향이 있어 "뉴욕 월별출생자 수" 데이터 셋은 정상성 시계열이 아닌 것으로 판단된다. 참고로, decompose()함수를 사용하면 데이터셋을 4가지 요인으로 분해 시켜준다. autoplot(decompose())를 사용하면 data / trend / seasonal / remainder 컬럼으로 나눠진 그래프를 확인할 수 있다. autoplot(decompose(birth)) #시계열 데이터를 4가지 요인으로 분해한 후 도식화 2) 정상성 시계열 자료로 변환 주어진 비정상성 시계열 데이터를 정상성 시계열로 바꾸는 방법은 두 가지가 있다. (1) 차분(diff) : 평균이 일정하지 않은 시계열을 정상화하는 방법으로, 현 시점 자료에서 전 시점 자료를 빼는 것 - 일반차분(regular difference) : 바로 전 시점의 자료를 빼는 방법 - 계절차분(seasonal difference) : 여러 시점 전의 자료를 빼는 방법 (주로 계절성을 갖는 자료의 정상화에 사용) - 함수 : diff(data, lag=k, diff=d) : 지연차수 k 및 차분차수 d의 차분을 수행 (k와d의 default값은 0) (2) 로그변환(log) : 시계열 자료를 로그함수로 변환하여 정상화하는 방법으로, 반드시 "차분" 전에 진행되어야 한다. 위의 시계열 자료는 평균과 분산 둘다 비정상이므로 로그변환 후 차분한다. tseries 패키지에 내장되어 있는 adf.test 함수로 시계열이 정상성 시계열인지 확인한다. p-value가 0.01이므로 유의수준 0.05 하에서 로그변환 후 차분한 데이터셋은 정상성 시계열이라고 할 수 있다. birth1 <- diff(log(birth)) adf.test(birth1, alternative="stationary", k=0) Augmented Dickey-Fuller Test data: diff(log(birth)) Dickey-Fuller = -23.589, Lag order = 0, p-value = 0.01 alternative hypothesis: stationary 3) ACF/PACF 차트나 auto.Arima 함수를 사용하여 최적화된 파라미터 찾기 (1) ACF - lag는 0부터 값을 갖는데, 너무 많은 구간을 설정하면 그래프를 보고 판단하기 어렵다. (max=20으로 설정) acf(birth1, lag.max=20) # 자기상관계수 그래프 출력 (2) pacf pacf(birth1, lag.max=20) # 편자기상관계수 그래프 출력 acf 와 pacf의 lag 절단값이 명확하지 않아 Arima 모형 확정이 어려우므로, auto.arima 함수를 사용한다. auto.arima(birth) Series: birth ARIMA(2,1,2)(1,1,1)[12] Coefficients: ar1 ar2 ma1 ma2 sar1 sma1 0.6539 -0.4540 -0.7255 0.2532 -0.2427 -0.8451 s.e. 0.3004 0.2429 0.3228 0.2879 0.0985 0.0995 sigma^2 estimated as 0.4076: log likelihood=-157.45 AIC=328.91 AICc=329.67 BIC=350.21 tsdiag(auto.arima(birth)) #자기상관함수에 의한 모형 진단(모형 타당성 검정) 아래의 그림은 auto.arima 함수를 사용해서 구한 파라미터가 모형의 가정을 만족하는지를 보여주는 그림이다. - 첫번째 그래프를 보면 뚜렷한 증가 및 감소 패턴이 없음 - 두번째 잔차의 자기상관함수 그래프(ACF of Residuals)를 보면 모두 파란선(임계치) 안에 들어있으므로 자기상관관계가 없고, 규칙성이 보이지 않음 - 세번째 Box-Ljung 검정 그래프에서는 p-value값이 0이상으로 분포됨 (파란색 점선 : 유의확률 0.05) 위의 내용을 보면 ARIMA 모형이 양호한 시계열 모형을 보이며, 모델이 적합하다고 볼 수 있다. 4) Arima 모형 만들기 auto.arima에서 구한 파라미터로 ARIMA 모형을 만들어 본다. 아래 코드를 사용하여 ARIMA 모형을 만들고, 다음 단계에서 향후 2년간의 추이를 예측해보도록 한다. birth_arima <- arima(birth, order = c(2,1,2), seasonal = list(order = c(1,1,1), period = 12)) birth_arima Call: arima(x = birth, order = c(2, 1, 2), seasonal = list(order = c(1, 1, 1), period = 12)) Coefficients: ar1 ar2 ma1 ma2 sar1 sma1 0.6539 -0.4540 -0.7255 0.2532 -0.2427 -0.8451 s.e. 0.3004 0.2429 0.3228 0.2879 0.0985 0.0995 sigma^2 estimated as 0.3918: log likelihood = -157.45, aic = 328.91 5) 미래 추이에 대하여 예측하기 birth_fcast <- forecast(birth_arima, h= 12*2 ) #12개월 주기로 향후 2년의 미래 추이를 예측, default값은 2년 birth_fcast Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 Jan 1960 27.69056 26.88679 28.49433 26.46130 28.91982 Feb 1960 26.07680 24.98034 27.17326 24.39991 27.75369 Mar 1960 29.26544 28.04020 30.49069 27.39160 31.13929 Apr 1960 27.59444 26.29165 28.89724 25.60199 29.58689 May 1960 28.93193 27.54860 30.31527 26.81630 31.04757 Jun 1960 28.55379 27.07347 30.03411 26.28983 30.81774 Jul 1960 29.84713 28.26538 31.42888 27.42806 32.26620 Aug 1960 29.45347 27.77916 31.12778 26.89284 32.01410 Sep 1960 29.16388 27.40777 30.91999 26.47814 31.84962 Oct 1960 29.21343 27.38167 31.04519 26.41200 32.01486 Nov 1960 27.26221 25.35695 29.16746 24.34837 30.17604 Dec 1960 28.06863 26.09098 30.04628 25.04408 31.09318 Jan 1961 27.66908 25.63754 29.70062 24.56210 30.77606 Feb 1961 26.21255 24.12791 28.29719 23.02437 29.40073 Mar 1961 29.22612 27.08633 31.36591 25.95360 32.49865 Apr 1961 27.58011 25.38474 29.77547 24.22259 30.93762 May 1961 28.71354 26.46431 30.96277 25.27363 32.15344 Jun 1961 28.21736 25.91651 30.51820 24.69852 31.73620 Jul 1961 29.98728 27.63644 32.33812 26.39198 33.58258 Aug 1961 29.96127 27.56138 32.36117 26.29095 33.63160 Sep 1961 29.56515 27.11690 32.01339 25.82088 33.30941 Oct 1961 29.54543 27.04965 32.04121 25.72846 33.36240 Nov 1961 27.57845 25.03603 30.12088 23.69015 31.46676 Dec 1961 28.40796 25.81976 30.99616 24.44965 32.36627 plot(birth_fcast, main = "Forecasts 1960~1961") 파란색 선 부분이 예측치이다. 계절성과 추세가 잘 반영된 예측 결과로 보인다. 지금까지 시계열 분석의 다양한 기법 중 가장 일반적으로 사용되는 ARIMA 모형에 대해 알아보았다. 최종 예측을 하고, 실제 결과와 비교 평가하는 방법에 대해서는 다음 포스팅에.. 반응형
(R)제29(02)_시계열분석 실습(R로 해 보는)
다음과 같은 데이터가 있습니다. 그냥(?) 60개의 데이터입니다.
이것은 그냥 단순한 60개의 데이터입니다.
향후 10개의 데이터를 예측해 보기로 합니다.
그런데 60개이니까, 혹시 12개월 5년 치 데이터가 아닐까? 하며 월별 데이터로도 생각할 수도 있습니다.
그럴 수도 있고, 그렇지 않을 수도 있습니다.
아무런 의미도 없는 그냥 단순한 데이터인데, 뜬금없이 60개니까 월별(^) 데이터로
한정하는 것은 때로는 잘못된 경우가 되기도 합니다.
644 546 515 506 468 729 719 626 677 679 654 630 662 539 419 592 376 390 292 340
457 254 368 376 254 85 198 212 262 368 554 538 478 623 522 404 360 619 524 562
438 327 311 466 423 515 367 340 279 264 411 409 436 468 409 275 265 301 423 405
384 557 474 519 459 504 349 312 303 423 384 425 391 317 404 368 516 558 537 579
567 606 554 335 367 447 354 257 237 212 283 318 439 611 598 586 602 558 541 527
(1) 그래도 혹시 12개월 마다 계절성이 있는 것 아닌가?
(2) 아예 별 의미도 없는 데이터, 제멋대로 된 데이터가 아닐까?
뭐 분석할 것도 없는 것 아닌가? 생각해 보시는 것도 필요합니다.
[실습](1) 일단 데이터를 읽어 온다. read.csv, read.table 등을 이용하기도 하고…
d:\r_stat\ar1.dat
(2) 시계열로 바꾸기 전에 데이터 그림을 그려 본다.
… 흠..
setwd(“d:/r_stat”)
(ts01 <- scan("ar1.dat",what="")) # 데이터 읽어오기 ts01 plot(ts01) 시계열이 있는 것 같기도 하고, Random 하게 움직이는 데이터이기도 하고... 상관분석, 회귀분석을 할 때에도 그림을 그려보는 것이 필요합니다. 물론 전처리 과정에서는 필수적인 코스입니다 ^^^ (3) 도대체 이 숫자들이 시간에 따른 데이터이라면 데이터 내에 어떤 패튼이 있기나 한 건가? 사실 이 데이터는 AR(1) 모형이 적합한 데이터입니다. 그런데 사전에 알려 주지 않으면 어떻게 알 수 있을까? (4) 이때 별 생각없이 ACF, PACF 를 구해 봅니다. 아까 (2)에서 별 생각없이 그래프로 그려 보는 것과 같은 개념입니다. ACF Autocorrelation Function PACF Partial Autocorrelation Function acf(ts01) # ts01 데이터를 이용하여 ACF 를 구해 봅니다. Error in acf(ts01) : 'x'는 반드시 수치형이어야 합니다 ts01 <- as.numeric(ts01) # ts01 을 수치형으로 바꿉니다. acf(ts01) pacf(ts01) ACF 그림 - ACF가 천천히 감소하니까 일단 AR 모형인 듯 PACF 그림 - 1차에서만 의미가 있고 2차부터는 의미가 없어 AR(1) 인 듯 (5) ACF와 PACF를 보면 AR(1) 이 맞겠구나... (3)에서 언급한 내용이 조금 해결됩니다. (6) AR(1) 모형이란 것을 알면, Z(t) = a + b1 Z(t-1) 와 같은 모형인데 이제 계수(parameter) a와 b1의 값을 구하면 되겠네요. 회귀분석과 비슷하게 구하면 됩니다. arima(ts01,order=c(1,0,0)) arima 함수를 이용하는데, 처음 인수는 시계열데이터, 그 다음은 order 인수인데 (p,d,q) 형태로 들어갑니다. p:AR 의 차수 d: difference 의 차수 q: MA 의 차수 여기서는 AR(1) 이니까 (1,0,0) 이 됩니다. (7) 이렇게 구한 a와 b1 이 의미가 있는지를 살펴봅니다. 이때 하는 것이 표준편차의 1.96배 보다 크면 a, b1 이 의미가 있고, 1.96 배 보다 작으면 a, b1 이 별로 의미가 없다...라고 결론을 내립니다. 사실 이때 계수 a는 별로 따지지를 않습니다. 이는 회귀분석에서도 비슷한 개념입니다. (8) (7)에서 계수가 의미가 있는 것이 알려지면 모형 확립은 완성되었습니다. 이제 이 모형으로 예측(prediction)을 하면 됩니다. predict(arima(ts01,order=c(1,0,0)),n.ahead=10 ) 다음은 AR(2) 그리고 MA 모형에 대해서 설명드리겠습니다 ^^^ * 혹시 광고가 뜨는 경우가 있는데 관심이 있으시면 클릭해 보시면 감사 구글에서 랜덤으로 들어가는 모양 ^^^
R 응용 시계열분석
출판사 리뷰
〈R 시각화와 통계자료분석 I〉, 〈R 시각화와 통계자료분석 II〉, 〈R 응용 회귀분석〉, 〈R 응용 다변량분석〉, 〈R 데이터마이닝〉에 이어 〈데이터 과학을 위한 R 시리즈〉 VI권을 출간하게 되었다. VI권에서는 R을 이용한 시계열 분석을 다루었다. 시계열 분석은 시간의 순서에 따라 기록된 자료를 분석하는 방법이다. 특히 시계열 예측은 관측된 자료에 기초하여 미래를 예측하는 것으로, 다양한 분야에서 주요 관심사가 되어왔다. 그러나 시계열 분석의 많은 이론들은 다른 통계 과목에 비해 비교적 난해하며, 이는 통계학 비전공자들에게 큰 장벽이었다. 이 책에서는 실제의 자료분석에 초점을 맞추었으며, 관련 이론에 대해서는 수학적 유도보다는 개념적인 전달에 치중하였다.
이 책(VI권)은 1 ~ 5부로 구성되었다. 1부에서는 시계열 자료의 탐색과 기초분석, 2부에서는 ARIMA 예측 모형과 주요 개념, 3부에서는 여러 시계열을 이용한 분석, 4부에서는 시계열 분석에 유용한 R 패키지들을 소개하고, 5부에서는 시계열 분석의 최근 기법 등을 소개한다. * 표시된 장(또는 절)은 좀 더 깊이 있는 내용을 다루고 있으므로 관심 있는 독자들만 읽기를 권장한다.
키워드에 대한 정보 r 시계열 분석
다음은 Bing에서 r 시계열 분석 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 통계데이터분석 – 시계열분석 – 시계열 데이터 🔑 time series analysis | 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터 | 주기
- 통계
- 데이터분석
- 시계열분석
- time series analysis
- 지수예측모델
- ARIMA
- 단순지수평활법
- 홀트지수평활법
- 홀트-윈터스지수평활법
통계데이터분석 #- #시계열분석 #- #시계열 #데이터 #🔑 #time #series #analysis #| #시간의 #흐름에 #따라 #일정한 #간격으로 #사건을 #관찰하여 #기록한 #데이터 #| #주기
YouTube에서 r 시계열 분석 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 통계데이터분석 – 시계열분석 – 시계열 데이터 🔑 time series analysis | 시간의 흐름에 따라 일정한 간격으로 사건을 관찰하여 기록한 데이터 | 주기 | r 시계열 분석, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.