일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 파이썬 pandas
- 텐서플로2와 머신러닝으로 시작하는 자연어처리
- student t분포
- 구글 BERT의 정석
- word2vec
- Django
- F분포
- 기초통계
- numpy
- rnn
- 머신러닝
- 결정계수
- 오래간만에 글쓰네
- 최소자승법
- Pandas
- 밑바닥부터 시작하는 딥러닝2
- 다층 퍼셉트론
- 히스토그램
- 가설검정
- 군집화
- 은준아 화이팅
- 코사인 유사도
- 자연어 처리
- 텍스트 분류
- 감성분석
- 모두의 딥러닝
- 회귀분석
- 차원축소
- 밑바닥부터 시작하는 딥러닝
- 기술통계학
- Today
- Total
데이터 한 그릇
4)시계열의 탐색적 자료 분석2 본문
1. 자체상관의 파악과 이해
시계열의 자체상관의 개념은 특정 시점의 값이 다른 시점의 값과 상관관계가 있다는 것
("자체상관"은 공식적인 언어 X)
아주 raw 하게 예시를 들어보면, 일일 온도를 측정한 데이터를 가정했을 때, 5월 15일의 온도가 높아질 때 8월 15일의 온도도 높아짐을 발견하여 두 날짜간의 상관관계가 존재함을 밝혀낼 수 있다(반대도 가능)
반면에 상관관계가 0에 가깝다는 사실을 알게 된다. 즉, 5월 15일의 온도 정보만으로는 8월 15일의 온도 범위의 어떤 정보도 알 수 없다
(여기까지가 자체상관을 raw 하게 간략하게 설명한 것)
위의 자체상관 개념을 자기상관(autocorrelation)으로 확장할 수 있다.
특정 시점에 고정되지 않는 자기상관은 자체상관을 일반화한 것, 특히 고정거리를 갖는 두 시점에 상관관계가 존재하는지와 같은 좀 더 일반적인 질문을 던져볼 수 있다
1.1 자기상관 기능
위키백과의 자기상관 정의:
계열상관(serial correlation) 이라고도 알려진 자기상관은 어떤 신호와 자신을 지연 함수로 시간상 지연 이동한 신호 간의 상관관계, 비공식적으로 관측치 사이의 유사성을 이들의 시차에 대한 함수로써 구하는 것이라고 표현해볼 수 있다
좀 더 쉽게 설명해보면, 자기 상관은 서로 다른 시점의 데이터 간 선형적 연관성 정도를 시차에 대한 함수로 알 수 있게 해준다
도표를 구해보면 자기상관함수(autocorrelation function(ACF))를 직관적으로 이해할 수 있다
##R
x <- 1:100
y <- sin(x * pi / 3)
plot(y, type = "b")
acf(y)
ACF의 계산은 직관적이며 간단하다. data.table 의 shift() 함수를 사용하면 이를 직접 계산해볼 수 있다
##R
## cor 함수는 상관계수를 계산하는 용도로 사용
## 첫 번째와 두 번째 파라미터가 비교 대상 둘에 대한 것
## use 파라미터는 누락된 값을 처리하는 방법으로
## pairwise.complete.obs 는 계산 대상 변수만을 대상으로 누락된 값을 제거한다
## y와 y로부터 시차 1과 2만큼 움직인 것과의 상관계수를 계산한다
library(data.table)
cor(y, shift(y,1), use = "pairwise.complete.obs") #0.5001531
cor(y, shift(y,2), use = "pairwise.complete.obs") #-0.5037152
위 그래프의 결과와 동일함을 확인할 수 있다 (y와 시차 1일 경우 상관계수 0.5, 2일 경우 -0.5)
수학적 관점에서 볼 때 ACF에 관련된 몇 가지 중요한 사실이 존재한다
- ACF의 주기함수는 원래 과정과 동일한 주기성을 가진다. 앞에서 다룬 사인 그래프에서 확인할 수 있다
- 주기함수들의 합의 자기상관은 각 개별 함수에 대한 자기상관의 합이다
- 시차가 0일때, 모든 시계열의 자기상관계수는 1이다
- 백색잡음 예제에 대하여 0이 아닌 모든 시차에서의 자기상관은 거의 0에 가깝다
- ACF는 양과 음의 시차에 관해서 대칭을 이룬다. 따라서 양의 시차만 명백하게 고려할 필요가 있다
- 0이 아닌 유효한 ACF 추정을 결정하는 통계적인 규칙은 +/-1.96 x sqrt(n)의 임계영역을 사용하는 것, 이 규칙은 충분히 큰 샘플 크기 및 과정의 유한분산에서만 유효
!!
정상 시계열의 ACF는 빠르게 0으로 접근한다
비정상 시계열은 ACF는 천천히 감소하며 종종 큰 양수를 가질 수 있다
1.2 편자기상관함수
편자기상관함수(partial autocorrelation function,PACF)는 ACF보다 어려울지도 모른다. 시계열의 특정 시차에 대한 편자기상관은 자신에 대한 그 시차의 편상관(partial correlation)인데, 이때 두 시점 사이에 존재하는 모든 정보를 고려한다
시간상 두 지점 간의 정보를 처리한다는 정확한 의미는 무엇일까? 이는 많은 조건부 상관관계를 계산하고, 전체 상관관계로부터 계산된 조건부 상관관계들을 빼야 한다는 의미를 가진다 (PACF를 계산하고 이해하긴 쉽지 않다)
(아래의 다른 블로그에서 가져온 정보를 참조)
PACF는 시각적으로 봐야 이해가 쉽고 명확하다
##R
y <- sin(x * pi / 3)
plot(y[1:30], type = 'b')
pacf(y)
사인 그래프의 경우 PACF 그래프는 ACF 그래프와 매우 대조적이다. PACF는 어떤 데이터가 유용한 정보를 가지고, 어떤 데이터가 단기간의 고조파(harmonic) 인지를 보여준다
사인 함수와 같이 노이즈가 없는 계절적인 과정에서 특정 시점 T에 대한 ACF 값은 T, 2T, 3T... 에서 동일하게 나타난다. ACF는 이러한 불필요한 중복 관계를 제거하지 못한다
반면에 PACF는 특정 시차에 대하여 어떤 관계가 불필요한 중복이 아니라 정말로 유용한 정보인지를 밝혀낸다
이는 적절한 정도의 시간 규모를 위한 윈도 길이를 얻을 수 있는 정보가 충분히 수집되었는지를 판단하는 데 매우 유용하다
교재에서의 ACF 설명과 PACF설명이 부족하다고 판단하여 다른 자료를 살펴봤다
잠깐 정상성에 대하여 상기!
확률변수 Z t 가 시간 t에 관계없이 평균, 분산이 일정하고, 시차 k에 따른 Z t 와 Z t+k 의 공분산인 자기공분산, 자기상관계수가 시차 k에만 의존하고 시점 t에는 무관하다면 해당 시계열은 약정상성을 갖는다고 할 수 있습니다.
https://velog.io/@hyundodo/%EC%9E%90%EA%B8%B0%EC%83%81%EA%B4%80%ED%95%A8%EC%88%98AutoCorrelation-Function
PACF이해를 위한 다른 설명(https://m.blog.naver.com/PostView.naverisHttpsRedirect=true&blogId=schatz37&logNo=221406078729)
하나의 예를 들어보면'교회' 와 '범죄' 와의 상관관계를 보려고 한다.여러 연구에 따르면 교회가 많을수록 범죄의 발생 수가 늘어난다는 연구결과가 있다.즉, 교회의 수와 범죄 발생 수 사이에는 양의 상관관계가 존재한다는 것이다.
하지만 이 분석은 잘못된 것이다.'교회의 수'가 많다는 것은 그 지역의 '인구 수'가 많다는 것이고, 이는 '범죄 발생 수'에 영향을 끼치기 때문이다.
그래서 우리는 '인구 수' 라는 부분을 제외한 '교회의 수'와 '범죄의 수'의 상관관계를 알아보려 한다.이 때 들어오는 개념이 PACF 라고 보면 된다.즉, 어떤 것들에 대한 상관관계를 보려고 할 때, 그에 영향을 주는 요소들을 제외하고 상관관계를 볼 때 PACF 를 이용한다는 것이다.
.
.
그러면 이를 시계열분석에 적용을 해보자.만약 내가 X_t 와 X_t-2 사이의 PACF 를 보고싶다면, X_t-1 의 영향을 제외한 상관관계를 보면 된다.즉, 두 시차 사이에 존재하는 관측치 값들을 제외한 상관관계를 본다는 것이다.
지금까지는 완벽하게 노이즈가 없는 단일-빈도 과정의 예만을 다뤘다
이제는 1) 노이즈가 없고 2) 노이즈가 적고, 3)노이즈가 많은 각 조건에서 두 사인 곡선의 합을 고려하는 약간 더 복잡한 예를 다뤄볼 예정
먼저 노이즈가 없는 도표를 각각 살펴보면 아래와 같다
y1 <- sin(x * pi/3)
plot(y1, type = 'b')
acf(y1)
pacf(y1)
y2 <- sin(x * pi / 10)
plot(y2, type = 'b')
acf(y2)
pacf(y2)
이제 두 계열을 더하여 결합하고, 결합된 계열에 대하여 같은 종류의 도표를 그린다
ACF의 경우에는 두 그래프의 ACF를 합한 것과 같으며, PACF는 그렇지 않다(pacf는 원본 계열보다 계열들의 합에서 더 중요함을 보여준다)
이번에는 동일한 상황이지만 노이즈를 많이 준 이후 그래프를 살펴볼 수 있다 (그래프가 많기 때문에 생략)
noise1 <- rnorm(100, sd = 0.85)
noise2 <- rnorm(100, sd = 0.85)
y1 <- y1 + noise1
y2 <- y2 + noise2
y <- y1 + y2
plot(y1, type= 'b')
acf(y1)
pacf(y1)
plot(y2, type = 'b')
acf(y2)
pacf(y2)
plot(y, type ='b')
acf(y)
pacf(y)
다음으로 사인 곡선처럼 보이지 않도록 노이즈를 더 많이 추가할 수 있다.
코드는 rnorm 에 sd(standard deviation) 파라미터의 값을 크게 준 것이기 때문에 동일한 코드다
비정상 데이터
주기성은 없지만 추세를 가진 계열에서는 ACF 및 PACF가 어떤지 알아보자
이런 경우 ACF의 경우 유용한 정보를 만들어내지 못한다. 모든 시차에 대하여 유사한 값을 계산하는데, 모든 시차가 데이터와 균등한 상관관계를 가지는 것처럼 보인다
다행히 PACF는 유의 PACF 상관계수가 시차 1에서만 존재한다는 정보를 제공하며 이에 대한 해석도 어렵지 않다
특정 시점의 직전(시차1)의 데이터를 알고 있다면 계열을 통틀어서 그 시점에 대해 얻을 수 있는 모든 정보를 알고 있는 것, 시간상 다음 시점은 이전 시점에 1을 더한 것이기 때문이다
x <- 1:100 plot(x) acf(x) pacf(x)
지금까지는 임의의 데이터를 만들어서 ACF와 PACF를 살펴봤는데, 실제 데이터셋에 대한 ACF와 PACF를 살펴보도록 하자
ACF 같은 경우에 모든 시차에 대해서 유사한 값을 계산하며 많은 임곗값을 가지게 되는데 이는 데이터가 추세를 가지고 있기 때문이다(위에서 살펴봤듯이 비정상성 데이터 중에 추세를 가지고 있는 데이터는 ACF가 모든 시차에 대해서 유사한 값을 도출하게 된다)
또한 PACF는 큰 시차에 대해서 임곗값을 가지게 되는데, 이는 데이터에 추세가 있더라도, 식별 가능한 연간 계절적 주기가 존재하기 떄문이다
1.3 허위상관
경제학자들은 근본적인 추세를 가진 데이터가 허위상관을 만들어낼 가능성이 높다는 사실을 오랜 시간에 걸쳐 알아냈다
추세 시계열은 정상 시계열보다 정보가 더 많아서 여러 데이터가 함께 움직일 가능성이 더 높다
허위상관을 나타내는 시계열의 일반적인 특징은 다음과 같다
- 계절성: 핫도그 소비와 여름 사이의 허위상관을 생각해볼 수 있다
- 시간이 지나면서 변한 데이터의 수준이나 경사의 이동(무의미하게 높은 상관관계를 가진 아령처럼 생긴 분포도를 생성함)
- 누적 합계(일부 산업에서는 모델이나 상관관계를 실제보다 더 좋아 보이게 만들기 위한 속임수로 사용)
공적분
공적분은 두 시계열 사이의 진짜 관계를 지칭한다.
일반적으로 흔히 사용하는 '술 취한 사람과 그의 강아지' 이야기로 예를 들 수 있다
술 취한 사람이 그의 강아지에게 목줄을 채우고 함께 산책을 하고 있다고 가정해보자
술에 취한 사람은 비틀거리며 무작위로 걷게 된다. 그의 손에 묶인 강아지도 함께 무작위로 걷지만 목적지까지 가는 경로에서 크게 벗어나지 않고 도착한다
즉, 강아지와 취한 사람은 가까이 붙어 있어서 그들의 거리가 일정 수준 이상으로 벌어지지 않는다
이때 공적분(두 시계열 사이의 진짜 관계)은 높은 상관관계를 보여준다. 공적분과 허위상관 모두 높은 상관관계가 관측되어서 취한 사람과 강아지의 과정이 공적분인지 아니면 허위상관인지 구별하는 것은 어렵다
하지만 이 둘 사이에는 중요한 차이점이 존재한다, 허위 상관은 어떤 관계도 없어도 되지만, 공적분 시계열은 서로 밀접한 관련성을 가진다(내가 라면을 하루에 하나씩 먹으면 우크라이나 전쟁은 끝난다, 강아지와 술취한사람)
허위 상관에 관련된 많은 예시들이 존재하는데, 특별하고 매우 강한 관계를 발견했다고 생각이 들 때마다 추세와 같이 분명한 원인이 무엇인지 데이터를 점검해야 한다. (위의 계절성, 시간이 지나면서 변한 데이터의 수준이나 경사의 이동, 누적 합계 등등
'시계열 분석 > Practical TIme Series Analysis' 카테고리의 다른 글
번외)딥러닝을 이용한 시계열 예측 (0) | 2022.10.14 |
---|---|
4)시계열의 탐색적 자료 분석3 (1) | 2022.10.13 |
4)시계열의 탐색적 자료 분석 (0) | 2022.10.12 |
3)계절성 데이터, 시간대, 사전관찰의 방지 (0) | 2022.10.12 |
2)데이터 정리2 (0) | 2022.10.12 |