일본 엔 미국 달러의 데이터 분석

8583 단어 자신의 메모

0주의



이 기사는 지식의 공유 목적이 아니고, 프로그래밍해 가는 과정에서 자신의 과거의 작업을 보답할 필요가 있을 때에 대비해, 기록해 두기 위한 것입니다.
그 때문에 필요 최소한의 메모와 파일의 인용 밖에 하지 않고, Qiita의 기사를 참고로 하여 일본 엔 미국 달러의 데이터 분석을 실시하는 것을 목적으로 하는 분은, 다른 투고자의 기사를 참고로 하는 것을 적극 권장합니다.
  

1 csv 파일에서 pandas로로드



「날짜」의 데이터형이 str이었기 때문에 datetime에 조정.

test01.py

def main():
    fname01 = "USDJPY_test01.csv"

    df = pd.read_csv(fname01,sep=',')
    df['日付け'] = pd.to_datetime(df['日付け'],format='%Y年%m月%d日')

#実行結果
#日付け      終値      始値      高値      安値    前日比%
#0 2019-03-05  111.89  111.72  112.12  111.70   0.13%
#1 2019-03-04  111.75  111.77  112.02  111.64  -0.15%
#2 2019-03-01  111.92  111.39  112.08  111.33   0.48%
#3 2019-02-28  111.39  111.00  111.50  110.66   0.35%
#4 2019-02-27  111.00  110.58  111.08  110.36   0.38%

#日付け     datetime64[ns]
#終値             float64
#始値             float64
#高値             float64
#安値             float64
#前日比%            object
#dtype: object

2 변화율 분석



어느 날에 수치가 크게 상승 또는 하강했을 경우, 다음 날은 그 반대의 움직임을 하는 설을 검증하고 싶다.

2.1 변화율을 히스토그램으로 플롯하여 표시.



test01.py

    df['前日比%'].plot.hist(bins=200,range=(-2,2))
    plt.show()




예상했지만 정규 분포에 가까운 형태로 되어 있다.

2.2 변화율의 크기와 다음날의 움직임의 상관 계수를 조사한다.



test01.py

    l=[]
    for i in range(0,200,1):
        #cnt1: しきい値よりも変化率が大きい かつ 次の日に前日の動きと逆の動きをした 日数
        cnt1 = df[((df['前日比%'] >= i*0.01)&(df['前日比%'].shift(1)<0) ) | ((df['前日比%'] <= i*-0.01)&(df['前日比%'].shift(1)>0) ) ]
        #cnt2: しきい値よりも変化率が大きい日数
        cnt2 = df[(df['前日比%'] >= i*0.01) | (df['前日比%'] <= i*-0.01) ]
        l.append(cnt1['日付け'].count()/cnt2['日付け'].count()*100)

    res=pd.DataFrame({'d1': [i * 0.01 for i in range(0,200,1)],
                      'd2': l    })

    print(res.corr())
    print(res[res['d2'] >= 60])

    #res['d2'].plot.hist()
    res.plot(kind='scatter',x='d1',y='d2')
    plt.show()

    #実行結果
    #    d1        d2
    #d1  1.000000  0.707159
    #d2  0.707159  1.000000



변화율의 최대치는 5.35였다.
변화율의 임계치를 0~5.35로 변화시켜, 변화율이 커질수록, 다음 날에 그 변화율과는 반대의 움직임을 할 확률이 높아지는지를 임계치마다 조사했다.
결과는 상관 계수는 0.70으로 약간 상관이 있다고 하는 모습.
그러나 산점도를 보면 임계값이 4.0 이상인 데이터가 부적절하다.
이 부분을 제외하고 상관을 생각하면 매우 약한 것을 알 수 있다.
보다 정확한 확률을 구하기 위해 도수 분포를 사용해 보자.

2.2도 분포 생성

좋은 웹페이지 즐겨찾기