※このブログではサーバー運用、技術の検証等の費用のため広告をいれています。
記事が見づらいなどの問題がありましたらContactからお知らせください。

<前のページ
FXデータ分析の練習(2)〜1変量データの統計量(基礎)〜

FXデータ分析の練習(3)〜多変量データの統計量(基礎)〜

python3 データ分析 pandas python scipy numpy

投稿日:2019年12月1日

このエントリーをはてなブックマークに追加
pandasはデータ分析に非常に便利なライブラリです。この記事のシリーズではpandasを使ってFXのデータを分析する練習をしてみました。

はじめに

この記事について

この記事ではFXのサンプルデータを使って多変量データの分析の基礎についてまとめます。
pandasやscipyには分析をする便利な関数が用意されていますが、計算できるものは一応自分で計算してからそれらの関数を使用しています。

この記事の前提

言語はPython3.6.3でJupyterNotebookを使って実行しています。ライブラリは以下のものを使用しています。

  • numpy==1.17.3
  • pandas==0.25.3
  • scipy==1.3.2

データの準備

サンプルデータの取得

ここでは多変量解析ということで、2つの異なるカテゴリのデータを使いたいと思います。Part1で準備したEURUSDのデータ

これに加えてGDPUSDのデータをダウンロードしてきます。リンク先の『Download Historical Data Here』からダウンロードします。

ディレクトリの構成

ダウンロードできたら作業ディレクトリ直下に解凍して以下の様なディレクトリ構成にします。

.
├── HISTDATA_COM_MT_EURUSD_M12017
│   ├── DAT_MT_EURUSD_M1_2017.csv
│   └── DAT_MT_EURUSD_M1_2017.txt
├── HISTDATA_COM_MT_EURUSD_M12018
│   ├── DAT_MT_EURUSD_M1_2018.csv
│   └── DAT_MT_EURUSD_M1_2018.txt
└── HISTDATA_COM_MT_GBPUSD_M12017
    ├── DAT_MT_GBPUSD_M1_2017.csv
    └── DAT_MT_GBPUSD_M1_2017.txt

多変量データの基礎

データの読み込み

まずはデータを読み込みます。
今回はEURUSDの2017年のデータとGBPUSDの2017年のデータを使ってみます。

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt

data1 = pd.read_csv(
    "./HISTDATA_COM_MT_EURUSD_M12017/DAT_MT_EURUSD_M1_2017.csv",
    names=["date","time","open","high","low","close","spread"])
data2 = pd.read_csv(
    "./HISTDATA_COM_MT_NZDCAD_M12017/DAT_MT_NZDCAD_M1_2017.csv",
    names=["date","time","open","high","low","close","spread"])

共分散(covariance)

共分散(covariance)は2つの変数の関係の強さを表す指標です。共分散は以下の式で表されます。

s_{xy} = \frac {\displaystyle \sum_{i = 1}^n {(x_i - \overline{x})(y_{i} - \overline{y})}}{n-1}{ \qquad { \text{(共分散)}}} \\ \quad \\ \qquad x:変数1 \\ \qquad y:変数2 \\ \qquad n:xのデータ数(yのデータ数)

例:ある数人の身長と体重を計測したとしましょう。

無題のプレゼンテーション.png
  • Aさん【身長:165cm;体重61.3kg】
  • Bさん【身長:168cm;体重62.0kg】
  • Cさん【身長:172cm;体重64.5kg】

身長が大きい方が体重も大きい値をとりがちですね?その様なデータの場合、共分散は正の値を取ります。
例えばこの3人の場合身長の平均が168.3cm、体重の平均が62.6kgです。共分散を計算すると、

{ ( 165 - 168.3 ) × ( 61.3 - 62.6 ) + ( 168 - 168.3 ) × ( 62.0 - 62.6 ) + ( 172 - 168.3 ) × ( 64.5 - 62.6 ) } ÷ ( 3 -1 ) = 0.25

ではpythonで計算してみます。

# それぞれの『open』のデータを取得
data1_open = data1["open"]
data2_open = data2["open"]

data_len = len(data1_open)

# それぞれのデータの平均値を計算
data1_mean = data1_open.mean()
data2_mean = data2_open.mean()

# 全てのデータに対して平均との差を計算
# Noneは0に置換
data1_diff = (data1_open - data1_mean).fillna(0)
data2_diff = (data2_open - data2_mean).fillna(0)

# 2変数の積の和を計算
# Noneは0に置換
diff_sum = sum((data1_diff * data2_diff).fillna(0))

# 共分散を計算
conv_sample = diff_sum / data_len

print("共分散:{}".format(conv_sample))
出力
共分散:0.001699501944684368

共分散行列(covariance matrix)

共分散行列(covariance matrix)または分散共分散行列(variance-covariance matrix)は複数の変数において、分散と共分散の一覧を行列の形式でまとめたものです。

\textbf{Cov}= \left[ \begin{array}{rr} \sigma_{x}^{2} & Cov(x,y) \\ Cov(x,y) & \sigma_{y}^{2} \end{array} \right] \\ \quad \\ \qquad \sigma_{x}^2:xの分散 \\ \qquad \sigma_{y}^2:yの分散 \\ \qquad Cov(x,y):xとyの共分散

分散共分散行列では対角成分がそれぞれの変数の分散になり、その他の成分が共分散になるわけですね。
pandasDataFramescipyではcov()メソッドでこの分散共分散行列を取得できます。

data_concated = pd.concat([data1_open,data2_open], axis=1)
data_concated.cov()
▲出力された分散共分散行列

相関(correlation)

相関(correlation)とは二つの確率変数の分布法則の関係の事を言います。例えばXとYという2つの変量(ともに測定データ)があった時を考えます。この時、Xの大きな値とYの大きな値、Xの小さな値とYの小さな値が対応している場合、この2つの変量には正の相関があるといえます。
この相関の程度は相関係数(correlation coefficient)で表すことができます。普通、単に相関係数と言った時ときにはピアソンの積率相関係数(Pearson product-moment correlation coefficient)のことを指し、以下の式であらわされます。

r_{xy} = { \frac{{\displaystyle \sum_{i = 1}^n (x_i - \overline{x}) (y_i - \overline{y})}}{\sqrt{{\displaystyle \sum_{i = 1}^n (x_i - \overline{x})^2}} \sqrt{{\displaystyle \sum_{i = 1}^n (y_i - \overline{y})^2}}} = \frac{s_{xy}}{s_xs_y}}{ \qquad { \text{(ピアソンの積率相関係数)}}} \\\quad \\ \qquad \overline{x}:x=\{x_{i}\}の算術平均 \\ \qquad \overline{y}:y=\{y_{i}\}の算術平均 \\ \qquad {s_{xy}}:共分散 \\ \qquad {s_{x}}:xの標本標準偏差 \\ \qquad {x_{y}}:yの標本標準偏差

相関係数は共分散を−1〜+1の範囲で標準化したものだとみなすこともできます。相関係数などを使いそれぞれの変数の相関を調べることを相関分析(correlation analysis)といいます。
実際にpythonで一つずつ計算してみます。

# それぞれの『open』のデータを取得
data1_open = data1["open"]
data2_open = data2["open"]

data_len = len(data1_open)

# それぞれのデータの平均値を計算
data1_mean = data1_open.mean()
data2_mean = data2_open.mean()

# 全てのデータに対して平均との差を計算
# Noneは0に置換
data1_diff = (data1_open - data1_mean).fillna(0)
data2_diff = (data2_open - data2_mean).fillna(0)

# 2変数の積の和を計算
# Noneは0に置換
diff_sum = (data1_diff * data2_diff).fillna(0).sum()

# 差の2乗を計算
data1_diff_sq = (data1_diff * data1_diff).fillna(0)
data2_diff_sq = (data2_diff * data2_diff).fillna(0)

# 差の2乗の和の積を計算
data_diff_sum_sq = (data1_diff_sq.sum() * data2_diff_sq.sum())

# 相関係数を計算
correlation = diff_sum/np.sqrt(data_diff_sum_sq)
print("相関係数:{}".format(correlation))
出力
相関係数:0.8925594922892961

非常に強い正の相関がでました。実際にグラフを見てみます。

data1_open.plot()
data2_open.plot()
▲EURUSDのグラフ
▲GBPUSDのグラフ

片方のグラフの増加に対してもう片方のグラフも増加していることがわかります。
実際のデータでは相関係数のみで関係性が強い、無関係の判断するのは危険ですが一つの指標になりそうですね。

このエントリーをはてなブックマークに追加

<前のページ
FXデータ分析の練習(2)〜1変量データの統計量(基礎)〜

関連記事

記事へのコメント
2:mitunsGag
2020年11月3日3:43

Ich bin gegen covid 19. Was ist deine Meinung? mituns

3:mitunsGag
2020年11月6日0:58

Ich bin gegen covid 19. Was ist deine Meinung? mituns

4:ed meds
2020年11月24日10:56

erectile tissue problems
best erectile dysfunction pumps
erectile dysfunction medications

5:erectile dysfunction treatment
2020年11月24日23:25

erectile hardening cream
can erectile dysfunction be permanent
acupuncture for erectile

5:mitunsGag
2020年11月8日18:06

Ich bin gegen covid 19. Was ist deine Meinung? mituns

6:MixNob
2020年11月27日2:56

thx much for the invitation :). I am expert of pandemic, and i can help you.
PS: How are you? I am from France :) very good forum :) mixx

7:wooInhib
2020年11月27日22:44

hi, i am woo from Sweden and i want to explain any thing about "pandemic". Please ask me :)

8:wooInhib
2020年12月3日18:28

hi, i am woo from Sweden and i want to explain any thing about "pandemic". Please ask me :)

9:thoumma
2020年12月18日20:06

Kamagra Beipackzettel Toupsboush <a href=https://bansocialism.com/>cialis online prescription</a> Whermeni Viagra 28 Ans

10:pharmacious
2020年12月31日21:56

malaria drugs list
<a href=https://chloroquineorigin.com/>clorochina</a>
erectile d with matt lauer
<a href=https://erectiledysfunctionsxag.com/>erectile aid device</a>
hydroxychloroquine 200 mg tablet
<a href=https://hydroxychloroquinex.com/>hctz hydrochlorothiazide</a>
erectile natural remedies
<a href=https://plaquenilx.com/>plaquenil 400 mg</a>
tadalafil medication
<a href=https://tadalisxs.com/>tadalafil gel</a>
zpak for uti
<a href=https://zithromaxes.com/>zithromax prices</a>

11:pharmacious
2021年1月1日5:17

chloraquine
<a href=https://chloroquineorigin.com/>chloroquine diphosphate</a>
soma erectile dysfunction
<a href=https://erectiledysfunctionsxag.com/>erectile breast tissue</a>
what is hydroxychloroquine 200 mg
<a href=https://hydroxychloroquinex.com/>buy hydroxychloroquine</a>
erectile pills china
<a href=https://plaquenilx.com/>chloroquine and plaquenil</a>
tadalafil for women
<a href=https://tadalisxs.com/>generic tadalafil 40 mg</a>
citromax
<a href=https://zithromaxes.com/>generic for zithromax</a>

12:pharmacious
2021年1月2日7:01

chrloroquine
<a href="https://chloroquineorigin.com/">clonidine hcl</a>
erectile function in vagina
<a href="https://erectiledysfunctionsxag.com/">erectile medication over counter</a>
risks of hydroxychloroquine
<a href="https://hydroxychloroquinex.com/">sulfasalazine</a>
erectile solutions
<a href="https://plaquenilx.com/">plaquenil hydroxychloroquine</a>
tadalafil e20 pill
<a href="https://tadalisxs.com/">tadalis sx</a>
zithromax is used for
<a href="https://zithromaxes.com/">buy zithromax no prescription</a>

13:MixNob
2021年1月15日23:54

I am expert of pandemic, and i can help you.
PS: How are you? I am from France :)/ mixx

14:wazzlut
2021年2月5日11:26

HI Guys. Thanks for my approving / wazz user, new user hehe

15:wazzlut
2021年2月7日11:55

HI Guys. Thanks for my approving / wazz user, new user hehe

16:wazzlut
2021年2月11日4:13

Where is a my topic with invite? Hmm i cant find it now ;/ wizz

17:spiderlut
2021年2月15日16:03

hiiiiiii i am spider from Arg. I would to ask you what kind of games do you like playing?? My favourite games is diablo rpg

18:spiderlut
2021年2月18日23:57

hiiiiiii i am spider from Arg. I would to ask you what kind of games do you like playing?? My favourite games is diablo rpg

19:selllut
2021年2月26日11:36

yyy where can i find a shoutbox message? / sells

20:Tadalafil
2021年3月1日9:48

tadalafil 60 mg for saletadalafil <a href="https://megalistadalafil.com/buy">tadalafil tablets for sale</a>

21:avanafil
2021年3月1日15:51

avanafil stendra dosage <a href="https://avanaavanafil.com/buy">avana india</a>

22:avanafil
2021年3月1日15:52

avanafil stendra dosage <a href="https://avanaavanafil.com/buy">avana india</a>

23:priligy
2021年3月3日17:06

dapoxetine <a href="https://priligydapoxetinex.com/buy">dapoxetine pills</a>

24:priligy
2021年3月3日17:06

dapoxetine <a href="https://priligydapoxetinex.com/buy">dapoxetine pills</a>

25:priligy
2021年3月3日17:07

dapoxetine <a href="https://priligydapoxetinex.com/buy">dapoxetine pills</a>

26:priligy
2021年3月3日17:08

dapoxetine <a href="https://priligydapoxetinex.com/buy">dapoxetine pills</a>

27:priligy
2021年3月3日17:09

dapoxetine <a href="https://priligydapoxetinex.com/buy">dapoxetine pills</a>

28:cyclomune
2021年3月4日10:53

cyclosporine ophthalmic <a href="http://cyclosporineopthalmicemulsion.com/buy">cyclosporine cost</a>

29:Tadalafil
2021年3月4日12:29

buy megalis canada <a href="https://megalistadalafil.com/#">tadalafil pills</a>

30:Tadalafil
2021年3月4日12:30

buy megalis canada <a href="https://megalistadalafil.com/#">tadalafil pills</a>

31:Tadalafil
2021年3月4日12:31

buy megalis canada <a href="https://megalistadalafil.com/#">tadalafil pills</a>

32:brimonidine
2021年3月5日0:07

buy generic brimonidine <a href="http://combiganbrimonidinetartrate.com/delivery">combigan generic</a>

33:brimonidine
2021年3月5日0:08

buy generic brimonidine <a href="http://combiganbrimonidinetartrate.com/delivery">combigan generic</a>

34:cyclosporine
2021年3月5日4:40

buy cyclomune usa <a href="http://cyclosporineopthalmicemulsion.com/faq">cyclosporine for humans</a>

35:cyclosporine
2021年3月5日4:58

cyclomune eye drop <a href="http://cyclosporineopthalmicemulsion.com/#">cyclosporine lab tube</a>

36:cyclosporine
2021年3月5日5:01

cyclomune eye drop <a href="http://cyclosporineopthalmicemulsion.com/#">cyclosporine lab tube</a>

37:cyclosporine
2021年3月5日5:02

cyclomune eye drop <a href="http://cyclosporineopthalmicemulsion.com/#">cyclosporine lab tube</a>

38:cyclosporine
2021年3月5日5:02

cyclomune eye drop <a href="http://cyclosporineopthalmicemulsion.com/#">cyclosporine lab tube</a>

39:cyclosporine
2021年3月5日5:03

cyclomune eye drop <a href="http://cyclosporineopthalmicemulsion.com/#">cyclosporine lab tube</a>

40:combigan
2021年3月5日6:07

buy combigan online <a href="http://combiganbrimonidinetartrate.com/delivery">combigan</a>

41:combigan
2021年3月5日6:08

buy combigan online <a href="http://combiganbrimonidinetartrate.com/delivery">combigan</a>

42:combigan
2021年3月5日6:08

buy combigan online <a href="http://combiganbrimonidinetartrate.com/delivery">combigan</a>

43:selllut
2021年3月5日13:35

yyy where can i find a shoutbox message? / sells

44:avanafil
2021年3月5日16:11

buy avana uk <a href="https://avanaavanafil.com/faq">avana 50 mg</a>

45:avanafil
2021年3月5日18:08

avana tablet <a href="https://avanaavanafil.com/buy">avanafil india</a>

46:priligy
2021年3月6日1:40

dapoxetine 10 mg <a href="https://priligydapoxetinex.com/buy">dapoxetine ed</a>

47:priligy
2021年3月6日1:41

dapoxetine 10 mg <a href="https://priligydapoxetinex.com/buy">dapoxetine ed</a>

48:priligy
2021年3月6日1:45

dapoxetine 10 mg <a href="https://priligydapoxetinex.com/buy">dapoxetine ed</a>

49:priligy
2021年3月6日1:46

dapoxetine 10 mg <a href="https://priligydapoxetinex.com/buy">dapoxetine ed</a>

50:avana
2021年3月6日5:28

buy avana online <a href="https://avanaavanafil.com/faq">avana</a>

51:avana
2021年3月6日5:29

buy avana online <a href="https://avanaavanafil.com/faq">avana</a>

52:avana
2021年3月6日5:30

buy avana online <a href="https://avanaavanafil.com/faq">avana</a>

53:avana
2021年3月6日5:32

buy avana online <a href="https://avanaavanafil.com/faq">avana</a>

54:avana
2021年3月6日5:32

buy avana online <a href="https://avanaavanafil.com/faq">avana</a>

55:Tadalafil
2021年3月6日6:43

tadalafil 20mg <a href="https://megalistadalafil.com/buy">buy tadalafil</a>

56:Tadalafil
2021年3月6日6:44

tadalafil 20mg <a href="https://megalistadalafil.com/buy">buy tadalafil</a>

57:cyclomune
2021年3月7日20:58

Cyclomune eye drops 0.05% <a href="http://cyclosporineopthalmicemulsion.com/#">buy cyclosporine usa</a>

58:Megalis
2021年3月7日21:40

megalis tab <a href="https://megalistadalafil.com/faq">megalis 20 mg for male uses in hindi</a>

59:Megalis
2021年3月7日21:41

megalis tab <a href="https://megalistadalafil.com/faq">megalis 20 mg for male uses in hindi</a>

60:avana
2021年3月8日4:20

avana canada <a href="https://avanaavanafil.com/#">avanafil vs cialis</a>

61:avana
2021年3月8日4:21

avana canada <a href="https://avanaavanafil.com/#">avanafil vs cialis</a>

62:avana
2021年3月8日4:24

avana canada <a href="https://avanaavanafil.com/#">avanafil vs cialis</a>

63:avana
2021年3月8日4:25

avana canada <a href="https://avanaavanafil.com/#">avanafil vs cialis</a>

64:avana
2021年3月8日4:27

avana canada <a href="https://avanaavanafil.com/#">avanafil vs cialis</a>

65:priligy
2021年3月8日9:57

dapoxetine prescription usa <a href="https://priligydapoxetinex.com/buy">priligy without a doctor prescription</a>

66:priligy
2021年3月8日9:57

dapoxetine prescription usa <a href="https://priligydapoxetinex.com/buy">priligy without a doctor prescription</a>

67:priligy
2021年3月8日10:00

dapoxetine prescription usa <a href="https://priligydapoxetinex.com/buy">priligy without a doctor prescription</a>

68:priligy
2021年3月8日10:01

dapoxetine prescription usa <a href="https://priligydapoxetinex.com/buy">priligy without a doctor prescription</a>

69:priligy
2021年3月8日10:02

dapoxetine prescription usa <a href="https://priligydapoxetinex.com/buy">priligy without a doctor prescription</a>