인과 적 영향이있는 시계열 개입 분석 : 통화 변동

시계열의 개입을 어떻게 설명 할 수 있습니까?

면책 조항 :이 문서는 보증없이 "있는 그대로"작성되었습니다. 데이터 과학 개념에 대한 개요를 제공 할 목적으로 작성되었으며 투자 조언이나 기타 전문적인 조언으로 해석되어서는 안됩니다.

시계열을 검토 할 때 특정 지점에서 해당 시리즈에 개입이 영향을 미치는 것은 매우 일반적 입니다.

이에 대한 몇 가지 예는 다음과 같습니다.

  • 매출에 큰 변화를 가져 오는 광고 캠페인
  • 도로 사망률을 낮추는 교통 정책의 긍정적 인 변화
  • 자산 가격에 영향을 미치는 경제 정책의 변화

예를 들어, 회사가 매출 증대를 목적으로 광고 캠페인을 실행한다고 가정 해 보겠습니다. 판매 데이터는 개입 후 기록 될 수 있지만 그 개입 없이는 판매가 어땠을 지 말할 수 없습니다 .

우리의 예

이 예에서는 환율 변동이 환율 변동에 미치는 영향을 고려해 보겠습니다 .

중앙 은행이 금리를 조작 할 때-이것은 시장에서 다른 통화에 비해 해당 통화의 인식 가치에 영향을 미치기 때문에 통화에 상당한 영향을 미친다고 가정합니다.

그러나 그러한 영향을 정량화하려면 어떻게해야합니까? 이것이 인과 적 영향 패키지 에서 어떻게 작동하는지 봅시다 . 이 패키지는 원래 Google에서 R 용으로 개발했지만이 예제에서는 Python 버전 (pycasualimpact)을 사용합니다.

2017 년의 GBP / USD 변동을 고려해 보겠습니다.

2017 년 11 월 잉글랜드 은행은 금리를 인상하기로 결정했습니다.

출처 : tradeeconomics.com

우리는 조사를 위해 인과 관계를 사용할 것입니다.

  1. 그러한 개입이 없을 때 예상 GBP / USD 환율은 어땠을까요?
  2. 그러한 개입이 중요하고 통화 수준에 영향을 미쳤는지 여부

예를 들어, 2017 년에 유럽 중앙 은행은 금리를 변경하지 않고 그대로 두었다는 것을 알 수 있습니다.

출처 : tradeeconomics.com

이를 고려하면 EUR / USD가이 예의 공변량으로 사용됩니다.

X = eurusd
y = gbpusd

분석

Quandl을 사용하여 FRED 데이터베이스에서 관련 통화 쌍을 다운로드합니다.

>>> eurusd = quandl.get("FRED/DEXUSEU", start_date='2017-01-01', end_date='2018-01-01', api_key='enter_api_key')
>>> gbpusd = quandl.get("FRED/DEXUSUK", start_date='2017-01-01', end_date='2018-01-01', api_key='enter_api_key')
gbpusd

GBP / USD

출처 : 연방 준비 은행 경제 데이터

EUR / USD

출처 : 연방 준비 은행 경제 데이터

2017 년 11 월 2 일에 영국 은행의 금리 결정이 내려진 상태에서 t = 0 ~ 229 는 사전 기간 (개입 전) 으로 정의 되고 t = 230 ~ 248 은 기간 이후 (개입 후)로 정의됩니다. .

data = pd.DataFrame({'y': y, 'X': X}, columns=['y', 'X'])
pre_period = [0, 229]
post_period = [230, 248]

사후 추론은 다음과 같이 생성 할 수 있습니다.

>>> ci = CausalImpact(data, pre_period, post_period)
>>> print(ci.summary())
>>> print(ci.summary(output='report'))
>>> ci.plot()

Posterior Inference {Causal Impact}
                          Average            Cumulative
Actual                    1.34               25.46
Prediction (s.d.)         1.32 (0.0)         25.17 (0.08)
95% CI                    [1.32, 1.33]       [25.01, 25.33]

Absolute effect (s.d.)    0.02 (0.0)         0.29 (0.08)
95% CI                    [0.01, 0.02]       [0.13, 0.45]

Relative effect (s.d.)    1.15% (0.32%)      1.15% (0.32%)
95% CI                    [0.52%, 1.77%]     [0.52%, 1.77%]

Posterior tail-area probability p: 0.0
Posterior prob. of a causal effect: 100.0%

또한이 모델은 인과 효과의 사후 확률이 100 %임을 나타냅니다.

더 자세한 보고서를 분석 할 때 출력에는 다음과 같은 내용도 표시됩니다.

우연히이 효과를 얻을 확률은 매우 작습니다
(베이지안 단측 꼬리 영역 확률 p = 0.0).
이는 인과 적 효과가 통계적으로
유의 한 것으로 간주 될 수 있음을 의미합니다.

이러한 관점에서 증거는 GBP / USD가 이자율이 상승하지 않았을 때보 다 더 높은 추세를 보였음을 시사합니다. 다음은 실제 비율과 예측에 대한 개요입니다.

출처 : Jupyter 노트북 출력

언급했듯이 Python은 개입없이 예측을 생성 할 때 R과 다른 접근 방식을 사용합니다. 후자는 사용자 사전 지식을 강조하는 베이지안 접근 방식에 더 의존합니다. 실제로 생성되는 예측이 일치하는지 확인하기 위해 두 가지 방법을 모두 시도 할 수 있습니다.

로그 변환에 대한 참고 사항

자산 가격 데이터로 작업 할 때 데이터를 로그 형식으로 변환하는 것이 일반적입니다.

이는 두 가지 이유로 수행됩니다.

  1. 가격 척도가 다른 자산을 비교할 수 있습니다. 예를 들어 $ 200 주식의 움직임을 $ 2,000 주식의 움직임과 비교
  2. 백분율 용어의 변동을 설명

또한 분석하려는 개입의 맥락에서 통화 가격이 주가보다 훨씬 더 가깝다는 사실은 가격 변동을 감지하기 어렵게 만듭니다.

그러나이 변환이 데이터에 적용되면 어떻게 될까요? 통계적으로 유의 한 인과 적 영향이 여전히 관찰됩니까?

다음은 로그 형식으로 표현 된 두 개의 시계열입니다.

EUR / USD

출처 : Jupyter 노트북 출력

GBP / USD

출처 : Jupyter 노트북 출력

로그 변환 된 데이터에서 실행할 때 출력 결과는 다음과 같습니다.

Posterior Inference {Causal Impact}
                          Average            Cumulative
Actual                    0.29               5.56
Prediction (s.d.)         0.28 (0.0)         5.34 (0.07)
95% CI                    [0.27, 0.29]       [5.21, 5.47]

Absolute effect (s.d.)    0.01 (0.0)         0.22 (0.07)
95% CI                    [0.0, 0.02]        [0.09, 0.35]

Relative effect (s.d.)    4.1% (1.22%)       4.1% (1.22%)
95% CI                    [1.68%, 6.47%]     [1.68%, 6.47%]

Posterior tail-area probability p: 0.0
Posterior prob. of a causal effect: 100.0%

출처 : Jupyter 노트북 출력

따라서 로그 변환을 사용하더라도 개입은 시계열의 궤적을 변경 한 것으로 여전히 표시됩니다. 두 통화의 척도는 여전히 상당히 다르며이 경우 로그 변환이 필요한지 여부에 대해 논쟁의 여지가 있습니다 (이러한 변환은 일반적으로 척도 측면에서 큰 편차를 보여주는 큰 값에서 가장 잘 작동합니다).

그러나 증거는 개입으로 인해 문제의 시계열이 이동했음을 시사합니다.

결론

이것은 인과 적 영향 라이브러리 에 대한 입문적인 예 이며 개입의 효과를 시계열에 걸쳐 조사 할 수있는 방법입니다.

시간 내 주셔서 감사 드리며 질문이나 피드백을 환영합니다.

이 예제의 Jupyter Notebook은 아래 참조 된 MGCodesandStats 저장소에서 사용할 수 있습니다.

참고 문헌

Suggested posts

중요하지만 종종 간과되는 데이터 과학 및 분석 기술

중요하지만 종종 간과되는 데이터 과학 및 분석 기술

이제 데이터 과학 및 분석에 들어가는 데 필요한 기술 기술을 배울 수있는 방법이 그 어느 때보 다 많았습니다. 온라인 과정, Kaggle 대회, YouTube 자습서, 스택 오버플로가있는 금광 등이 있습니다. 현장에 침입하려는 사람들은 종종 "X 데이터 작업을 수행하려면 어떤 프로그래밍 기술이 필요한가요?", "어떤 기계 학습 기술을 배워야합니까?", "기술을 구축하려면 어떤 프로젝트를 수행해야합니까?"와 같은 질문을 자주합니다. / 포트폴리오?”.

의미없는 말과 유효한 영어 텍스트를 구별하는 방법

의미없는 말과 유효한 영어 텍스트를 구별하는 방법

텍스트 피트니스 기능의 세계 해커 영화의 인기있는 비유에서 때때로 하루를 저장하기 위해 해독해야하는 암호화 된 텍스트가 있습니다. 주인공은 컴퓨터에서 몇 가지 빠른 헛소리를하고 해독 된 텍스트를 터뜨립니다. 마지막 순간에 세상을 구할 때가되었습니다.

Related posts

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

데이터 과학을위한 필수 수학 : 기초 및 기초 변경

고유 분해 및 SVD에 유용한 기저의 선형 대수 개념 이해이 기사에서는 고유 분해 또는 특이 값 분해 (SVD)와 같은 행렬 분해 방법을 이해하는 흥미로운 방법 인 기저 개념에 대해 알아 봅니다. 정의 기본은 벡터 공간 (벡터 집합)을 설명하는 데 사용되는 좌표계입니다.

판다와 에라스무스 연구 교환 분석

판다와 에라스무스 연구 교환 분석

Erasmus 프로그램 2011-12에서 발생한 20 만 개의 연구 교환으로 데이터 세트를 분석 한 결과 1987 년 이후 Erasmus 프로그램은 매년 수십만 명의 유럽 학생들에게 한 학기 또는 1 년을 해외에서 보낼 기회를 다른 유럽에서 보낼 수있는 기회를 제공합니다. 경제적 인 지원뿐만 아니라 쉬운 교환 과정을 제공합니다. 유럽의 다양한 사람, 언어 및 문화에 대한 마음과 마음을 열어주는 정말 귀중한 경험입니다.

데이터 과학을위한 8 가지 기본 통계 개념

… 평범한 영어로 설명

데이터 과학을위한 8 가지 기본 통계 개념

통계는 "수량 데이터의 수집, 분석, 해석 및 표현을 다루는 수학의 한 분야"입니다. 프로그래밍과 기계 학습을 혼합하면 데이터 과학의 핵심 기술에 대해 꽤 잘 설명 할 수 있습니다.

데이터 과학의 9 가지 거리 측정

일반적인 거리 측정의 장점과 함정

데이터 과학의 9 가지 거리 측정

감독되거나 감독되지 않는 많은 알고리즘은 거리 측정을 사용합니다. 유클리드 거리 또는 코사인 유사성과 같은 이러한 측정은 종종 k-NN, UMAP, HDBSCAN 등과 같은 알고리즘에서 찾을 수 있습니다.