인자의 인과성 조사~ 파이톤으로 그린 인과검정 시도~

모티프


거래상들은 시장을 설명하는 지표를 제작하거나 찾는다. 여기서 나는 이 지표를 대상으로 하는 브랜드가 가져오는 충격성을 고전적인 방법으로 검증하고 싶다.
가상화폐 시장에서도 비트코인의 기호화폐가 ~이라는 말이 종종 나오는데, 이런 지표는 실제로 비트코인의 장래 가격에 관계가 있는지에 도움이 된다.
다음은 많은 것을 상세하게 설명하였는데, 어쨌든 벡터 자기회귀모델의 통계적 검정이다.

그린제의 인과성 해설


그린저 인과성


(위키백과 참조: 여기. 액세스 시작)
그린제이 인과 검정은 1969년에 처음으로 제기된 통계 가설 검정으로 어떤 시간 서열이 다른 시간 서열을 예측하는 데 도움이 되는지 판단하는 데 쓰인다.
일반적으로 회귀는'단순한'관련 관계를 반영하지만 클레프그렌은 특정한 시간 서열의 과거치를 측정하여 다른 시간 서열의 장래치를 예측하는 능력을 통해 경제학에서의 인과관계를 검증할 수 있다고 주장한다.
'진정한 인과관계'는 전후가 연결된 사건에 인과관계가 있다고 가정하면 전후에 인과관계가 발생하는 오류가 발생하기 때문에 계량경제학자들은 그린거가'예측된 인과관계'만 찾을 수 있다고 주장한다.
'인과관계'라는 단어를 단독으로 사용하는 것은 오용이지만, 그린의 인과성은'전후관계(precedence) 또는 그린그 본인이 1977년에 주장한'시간관계(temporally related)'로 우선적으로 해석된다.
그린제의 인과성은 X가 Y를 일으키는지 아닌지를 감정하는 것이 아니라 X에 따라 Y가 예측할 수 있는지 판단하는 것이다.
일반적으로 X의 값이 X의 과거 값(과 Y의 과거 값)에 대한 일련의 t-검정과 F-검정을 통해 미래 Y의 값에 대한 통계적으로 유효한 정보를 제공할 수 있음을 증명하면'시간 서열 X에서 시간 서열 Y까지의 그레이스케일 인수가 존재한다'고 부른다.

메서드


달러와 달러를 고정 시간 순서로 하다먼저 $y$y의 단일 변수가 회귀 모델에 포함된 적당한 (다른 시간) $y$y의 값의 수량을 확정하여 회귀 가설이 없음을 확인합니다.
$$
\displaystyle y_{t}=a_{0}+a_{1}y_{t-1}+a_{2}y_{t-2}+\cdots +a_{m}y_{t-m}+\epsilon_{t}
$$
해설: 안정성이 있는 시간 서열은 흰색 소음과 같은 시간 서열을 가리킨다.예를 들어 닛케이 평균 주가가 마감하는 시간 서열 데이터가 불안정하면 닛케이 평균 주가의 일차 가격 변화율의 시간 서열 데이터(하지만 겹치지 않는다) 등 안정성을 가진 시간 서열 데이터라고 할 수 있다.
자기 회귀성에 관해서는 자기 회귀가 없으면 재난도 어려움도 없다t =\epsilon_달러로 바꾸면 비교적 안전할 수 있다.
그리고 과거 $x$값을 포함하여 회귀 모델을 확장합니다.
$$\displaystyle y_{t}=a_{0}+a_{1}y_{t-1}+a_{2}y_{t-2}+\cdots +a_{m}y_{t-m}+b_{p}x_{t-p}+\cdots +b_{q}x_{t-q}+\epsilon_{t} = a_0 +\sum_{k=1}^{m}a_k y_{t-k} +\sum_{k=p}^{q}b_k x_{t-k}$$
이 회귀 모델은 과거의 $x달러의 모든 값을 포함하는데, 이 값들은 $t의 통계값에 따라 각각 유효하다는 것이 증명되었다.그러나 달러×달러의 과거치 집단만 회귀모델의 설명력을 강화하고 $F검정('$x$집단으로 설명력을 증가하지 않았다'는 가설이 없음)에서 표시된 경우.상기 확장 회귀 모드에 대한 설명에서 달러는 의미 있는 최소 시간차는 $p$이고 최대 시간차는 $q달러입니다.
$x$y에서 $y까지의 그린제는 인과관계가 없습니다. 회귀 모델에 유효한 과거 가치가 없을 때만 $x$x를 통과할 수 있습니다.
해설: 보시다시피 실제 안정성이 있는 시간 서열 데이터는 이동하면서 관계가 있을 수 있는 변수를 찾는 것으로 이해할 수 있습니다.팩스가 더 많으면 똑같이 추가될 뿐이다.

비변수 테스트


상술한 선형을 바탕으로 하는 방법은 그레이스케일의 인과성을 평균적으로 확정하는 데 적합하다.그러나 분산 등 더 높은 시간으로 그레이스케일의 인과성을 측정할 수는 없다.그린제의 인과성 비변수 감정은 이 문제를 해결하기 위해 설계되었다.이러한 심사 중의 그린 인과성의 정의는 일반적이며 선형 자귀환 모델 등 모델을 가정하지 않는다.그레이스케일 인과성의 비파라미터 감정은 진단 도구로 사용할 수 있으며 더욱 우수한 파라미터 모델을 구축하는 데 사용되며 고급 모멘트와 비선형 등을 포함한다.

파이톤에서 그리니치의 인과성을 진행하는 방법


여기서 실험으로 신속판매와 소프트뱅크그룹의 인과성을 검증하면서 그린제의 인과성을 배우면 된다.
이번 변수는 대수차 $yt=\log{(xt/x{t-1})} 달러로 계산하고 싶습니다.(가격변화율도 좋지만 가격변화율의 분포는 엄밀히 말하면 좌우대칭이 아니며 대수차라면 좌우대칭이기 때문에 대수차도 사용하기 편한 경우가 있다. 실무적인 이분도와 결과의 해석성 등 가격변화율을 추천하기 때문에 사정이다.)

라이브러리 가져오기

import numpy as np
import pandas as pd
from datetime import datetime
import pandas_datareader.data as web
import statsmodels.api as sm
from statsmodels.tsa.api import VAR
from statsmodels.tsa.base.datetools import dates_from_str

데이터 다운로드 및 정형

_data = dict()

symbols = ["9983.T","9984.T"]
start = datetime(2000, 1, 1)
end = datetime(2021, 12, 3)

for symbol in symbols:
    _df = web.DataReader(symbol, 'yahoo', start, end)
    _data[symbol] = _df["Close"]

data = pd.concat(_data, axis=1)
데이터 형식은 다음과 같습니다.
9983.T 9984.T Date 2021-05-31 89170.0 8256.0 2021-06-01 88900.0 8162.0 2021-06-02 88770.0 8109.0 2021-06-03 85100.0 8208.0 2021-06-04 85100.0 8102.0
데이터를 통계적으로 검정할 수 있게 하다.
# 対数差分
logdiff = np.log(data).diff().replace([np.inf, -np.inf], np.nan).dropna()

# VARモデルのインスタンス化
model = VAR(logdiff, missing='drop')
그럼, 여기까지 준비가 되면 검정을 진행하도록 하죠.
results = model.fit(4)

# 9983 => 9984の因果性
test_results = results.test_causality(causing='9983.T', caused='9984.T')
print(test_results.pvalue) # 0.014741228373033606

# 9984 => 9983の因果性
test_results = results.test_causality(causing='9984.T', caused='9983.T')
print(test_results.pvalue) # 0.3556412686636041
결과적으로 9983에서 9984까지의 인과성 p값은 상당히 낮다.만약 5%를 의미 있는 수준으로 간주한다면 9984=>9983은 기각될 수 있을 것 같다.9984의 예측에서 9983은 팩스로 사용할 수 있지만 반대로 사용할 수 없다는 것이다.

충격 조사(펄스 응답)


인과응보성 요인 변수가 변할 때 목적 변수에 미치는 영향을 살펴봅시다.
펄스 응답에 관해서는 공식을 참고하세요.
period = 10
irf = results.irf(period)
irf.plot()

대각의 도표는 서로 관련되어 있고, 다른 것은 $x이다i\Rightarrow x_j$에 대한 펄스 응답을 표시합니다.점선은 95% 신뢰 구간이다.
reference: https://www.statsmodels.org/dev/vector_ar.html#impulse-response-analysis

예측


그럼 내가 예측해 볼게.statsmodels의 예측에서 미래의 시간을 $t로 추정하기 위해서는 기본적으로 모든 시간에 대한 추론이 필요하다.
그래서 한 줄을 쓰기가 어렵다.일차 경보법인 것 같습니다.
from tqdm.auto import tqdm

lag_order = results.k_ar
T = len(logdiff)
original_index = logdiff.index
predictions = []
index = []

for t in tqdm(range(lag_order, T)):
    res = results.forecast(logdiff.values[t-lag_order:t], 1)[0]
    predictions.append(res)
    index.append(original_index[t])

_preds = pd.DataFrame(predictions, index=index, columns=["9983_pred", "9984_pred"])
이 예측 신호의 사용 방법은 독자 스스로 결정한다.

결론


여기서 나는 그린의 인과성을 보았다.
여기에 소개된 통계 검정 기법에 따르면 센트리셀러의 최근 4개 시기 변화를 보면 소프트뱅크그룹의 주가를 예측할 가능성이 있다는 뜻이다.
모형이 간단하기 때문에 사용하기에 매우 편리하다.아울러 이런 통계가 과도하면 무작위 결과라도 좋은 결과만 본다는 편견이 생기기 쉬우므로 결과 활용에 유의해야 한다.
그럼, 모두 좋은 분석 생활을 하세요!

좋은 웹페이지 즐겨찾기