• 目次
  • 理解
  • 表計算
  • コード

【理解】データの関連の数学的解説

データの相関について

相関の定義

定義(相関)

2変量のデータについて, 散布図を描いたとき直線的な傾向があるときに相関があるという.

散布図において, 直線的な傾向がみられないとき無相関(相関がない)という.

定義(相関の正負)

散布図で右上がりの直線的な傾向がみられるとき正の相関といい, 右下がりの直線的な傾向がみられるとき負の相関という.

たとえば, 下の図において, 左側にある程, 正の相関が強く, 右にあるほど負の相関が強い.

$\displaystyle s_{xy}= \frac{(x_1 - \bar{x})(y_1-\bar{y})+\cdots + (x_n - \bar{x})(y_n-\bar{y})}{n}$(共分散)

定義(共分散)

2変量のデータ $x=[x_1, \ldots , x_n]$ と $y=[y_1, \ldots, y_n]$ について,

$s_{xy}$ $\displaystyle = \frac{(x_1 - \bar{x})(y_1-\bar{y})+\cdots + (x_n - \bar{x})(y_n-\bar{y})}{n}$

$\displaystyle = \frac{1}{n} \sum_{k=1}^n (x_k - \bar{x})(y_k-\bar{y})$

共分散という. ここで, $\bar{x}$ は $\bar{y}$ はそれぞれ $x$ と $y$ の平均値である.

たとえば,

$x=[1, 2, 3]$,
$y=[2,4,6]$

のとき, 共分散は $\frac{4}{3}$ です。

$z=[-2,-4,-6]$ のとき, $x$ と $z$ の共分散は $-\frac{4}{3}$ です。

$\displaystyle r = \frac{s_{xy}}{s_x s_y}$(相関係数)

定義(相関係数)

2変量のデータ $x=[x_1, \ldots , x_n]$ と $y=[y_1, \ldots, y_n]$ について,

$\displaystyle r = \frac{s_{xy}}{s_x s_y}$

相関係数という. ここで, $s_{xy}$ は $x$ と $y$ の共分散, $s_x$ と $s_y$ はそれぞれの標準偏差である.

たとえば,

$x=[1, 2, 3]$,
$y=[2,4,6]$

のとき, 相関係数は $1$ です。

$z=[-2,-4,-6]$ のとき, $x$ と $z$ の相関係数は $-1$ です。

$\displaystyle s_{x'y'} = acs_{xy}$
※ $x'=ax+b$ と $y'=cy+d$ による共分散の変化

データ $x$ と $y$ のそれぞれの各値を $x'=ax+b$, $y'=cy+d$ によって変換したあとのデータの共分散 $s_{x'y'}$ が $acs_{xy}$ であることを示してみよう。

性質

データ $x=[x_1, x_2, \cdots, x_n]$ と $y=[y_1, y_2, \cdots, y_n]$ について, 共分散を $s_{xy}$ とする.

データ $x$ の各値 $x_k$ $(1 \leq k \leq n)$ を $x_k'=ax_k + b$ と変換したあとのデータを $x'$ とする. また, データ $y$ の各値 $y_k$ $(1 \leq k \leq n)$ を $y_k'=cy_k + d$ と変換したあとのデータを $y'$ とする.

データ $x'$ と $y'$ の共分散を $s_{x'y'}$ とする.

このとき, $s_{x'y'}=acs_{xy}$ が成り立つ.

証明.

$x$ と $y$ の平均値を $\bar{x}$ と $\bar{y}$ とする.

$\bar{x'} = a\bar{x} + b$

$\bar{y'} = c\bar{y} + d$

データ $x$ と $y$ の共分散の定義式を計算するために $x_k'$ と $y_k'$ の偏差を求めると,

$x_k'-\bar{x'}$ $=(ax_k+b)-(a\bar{x}+b)$ $=a(x_k-\bar{x})$

$y_k'-\bar{y'}$ $=(cy_k+d)-(c\bar{y}+d)$ $=c(y_k-\bar{y})$

である.

$s_{x'y'}$

$\displaystyle =\frac{(x_1'-\bar{x'})(y_1'-\bar{y'}) + \cdots + (x_n'-\bar{x'})(y_n'-\bar{y'})}{n}$
$\displaystyle =\frac{ac(x_1-\bar{x})(y_1-\bar{y}) + \cdots + ac(x_n-\bar{x})(y_n-\bar{y})}{n}$
$\displaystyle =ac\frac{(x_1-\bar{x})(y_1-\bar{y}) + \cdots + (x_n-\bar{x})(y_n-\bar{y})}{n}$
$=acs_{xy}$.

ゆえに, $s_{x'y'}=acs_{xy}$ が得られた.

たとえば,

$x=[1, 2, 3]$

のとき, $y=2x+1$ と変形すると,

$x'=[3, 5, 7]$

になります。

$y=[2, 4, 6]$

のとき, $y'=-x+2$ と変形すると,

$y'=[0, -2, -4]$

になります。

$\displaystyle s_{xy}=\frac{4}{3}$,
$\displaystyle s_{x'y'}=-\frac{8}{3}$

なので,

$s_{x'y'}=2 \cdot (-1) \cdot s_{xy}$

が成り立っています。

$\displaystyle r_{x'y'} = \frac{acs_{xy}}{|ac|s_x s_y}$
※ $x'=ax+b$ と $y'=cy+d$ による相関係数の変化

データ $x$ と $y$ のそれぞれの各値を $x'=ax+b$, $y'=cy+d$ によって変換したあとのデータの相関係数 $r_{x'y'}$ が $\displaystyle \frac{ac}{|ac|}r_{xy}$ であることを示してみよう。

性質

データ $x=[x_1, x_2, \cdots, x_n]$ と $y=[y_1, y_2, \cdots, y_n]$ について, 相関係数を $r_{xy}$ とする.

データ $x$ の各値 $x_k$ $(1 \leq k \leq n)$ を $x_k'=ax_k + b$ と変換したあとのデータを $x'$ とする. また, データ $y$ の各値 $y_k$ $(1 \leq k \leq n)$ を $y_k'=cy_k + d$ と変換したあとのデータを $y'$ とする.

データ $x'$ と $y'$ の相関係数を $r_{x'y'}$ とする.

このとき, $r_{x'y'}=\displaystyle \frac{ac}{|ac|}r_{xy}$ が成り立つ.

証明.

データ $x$ と $y$ について, $x'=ax+b$ と $y'=cx'+d$ による標準偏差 $s_x$ と $s_y$, 共分散 $s_{xy}$ の変換は

$s_{x'} = |a|s_x$

$s_{y'} = |c|s_y$

$s_{x'y'} = acs_{xy}$

であった. 相関係数 $r_{x'y'}$ の定義式を計算すると,

$r_{x'y'}$

$=\displaystyle \frac{s_{x'y'}}{s_{x'}s_{y'}}$

$=\displaystyle \frac{acs_{xy}}{|a|s_{x} \times |c|s_{y}}$

$\displaystyle =\frac{ac}{|ac|}r_{xy}$

となる.

ゆえに, $r_{x'y'}=\displaystyle \frac{ac}{|ac|}r_{xy}$ が成り立つ.

たとえば,

$x=[1, 2, 3]$

のとき, $y=2x+1$ と変形すると,

$x'=[3, 5, 7]$

になります。

$y=[2, 4, 6]$

のとき, $y'=-x+2$ と変形すると,

$y'=[0, -2, -4]$

になります。

$\displaystyle r_{x'y'}=-1$,
$\displaystyle r_{xy}=1$

なので,

$\displaystyle r_{x'y'}=\frac{2 \cdot (-1)}{|2| \cdot |-1|} r_{xy}$

が成り立っています。

相関係数から統計的結果を導く基準(目安例)

相関係数 $r$ から統計的結果を導く一つの目安として,

  • $|r| \leqq 0.2$ $\leftrightarrow$ 相関なし
  • $0.2 \leqq |r| \leqq 0.4$ $\leftrightarrow$ 弱い相関
  • $0.4 \leqq |r| \leqq 0.7$ $\leftrightarrow$ (中程度の)相関
  • $0.7 \leqq |r|$ $\leftrightarrow$ 強い相関
  • $|r|=1$ $\leftrightarrow$ 完全な比例関係(強い相関)

がある。ただし, あくまでも一つの目安であり決まっている訳ではない。

散布図上に直線的な傾向があることが相関の前提である。

アンスコムの数値例 $r=0.816$

ヒストグラムの形状と特徴

観測値/統計量I_xI_yII_xII_yIII_xIII_yIV_xIV_y
1108.04109.14107.4686.58
286.9588.1486.7785.76
3137.58138.741312.7487.71
498.8198.7797.1188.84
5118.33119.26117.8188.47
6149.96148.10148.8487.04
767.2466.1366.0885.25
844.2643.1045.391912.50
91210.84129.13128.1585.56
1074.8277.2676.4287.91
1155.6854.7455.7386.89
平均9.07.509.07.509.07.509.07.50
分散11.04.1211.04.1211.04.1211.04.12
相関係数0.8160.8160.8160.8160.8160.8160.8160.816

$r=\cos \theta$

相関係数 $r$ が, データから定義される2つのベクトルのなす角 $\theta$ に関する $\cos \theta$ であることを理解してみよう。

命題

2つの変量

$x=[x_1, \ldots, x_n]$
$y=[y_1, \ldots, y_n]$

について, $\bar{x}$ と $\bar{y}$ をそれぞれの平均値とし, また $x$ と $y$ の相関係数を $r$ とする.

2本のベクトル

$\vec{x}=(x_1 - \bar{x}, \ldots, x_n - \bar{x})$
$\vec{y}=(y_1 - \bar{y}, \ldots, y_n - \bar{y})$

を定義し, $\vec{x}$ と $\vec{y}$ のなす角度を $\theta$ とする.

このとき,

$r = \cos \theta$

が成り立つ.

※ $n$ 次元ベクトル $\vec{a}$ と $\vec{b}$ の内積を $\vec{a} \cdot \vec{b}=|\vec{a}| |\vec{b}|\cos \theta$ と定める.

証明.

内積の定義より

$\displaystyle \cos \theta =\frac{\vec{x} \cdot \vec{y}}{|\vec{x}| |\vec{y}|} =\frac{\displaystyle \frac{1}{n} \vec{x} \cdot \vec{y}}{\displaystyle \frac{1}{\sqrt{n}}|\vec{x}| \times \frac{1}{\sqrt{n}}|\vec{y}|}$

である.

この式の分子はデータ $x$ と $y$ の共分散を表す.

$\displaystyle \displaystyle \frac{1}{n} \vec{x} \cdot \vec{y}$ $\displaystyle =\frac{(x_1-\bar{x})(y_1-\bar{y})+\cdots + (x_n-\bar{x})(y_n-\bar{y})}{n}$

この式の分母はデータ $x$ と $y$ のそれぞれの標準偏差を表す.

$\displaystyle \frac{1}{\sqrt{n}} |\vec{x}|$ $\displaystyle =\sqrt{\frac{(x_1-\bar{x})^2+\cdots + (x_n-\bar{x})^2}{n}}$

$\displaystyle \frac{1}{\sqrt{n}} |\vec{y}|$ $\displaystyle =\sqrt{\frac{(y_1-\bar{y})^2+\cdots + (y_n-\bar{y})^2}{n}}$

共分散をそれぞれの標準偏差で割ったものが相関係数であった.

ゆえに, データ $x$ と $y$ について,

$r =\cos \theta$

が成立する.

例えば,

$x$ $=[1,3,2]$
$y$ $=[1,2,3]$

ならば,

$\vec{x}$ $=(-1,1,0)$
$\vec{y}$ $=(-1,0,1)$

です。

これらのベクトルの成す角度は $\displaystyle \frac{\pi}{3}$ で, 実際に相関係数は

$\displaystyle r = \cos \frac{\pi}{3}$ $= 0.5$

です。

データの連関について

単純集計とクロス集計

1つの変数について, データを集計する方法を単純集計という。

賛成者
A案$10$
B案$5$
C案$3$
$18$
単純集計の例

2つ以上の変数の関係をふまえ, データを同時に集計する方法をクロス集計表という。

賛成反対
A案$5$$6$$11$
B案$3$$4$$7$
$8$$10$$18$
クロス集計表の例

$\displaystyle Q = \frac{ad-bc}{ad+bc}$(YuleのQ)

A$a$$b$$W=a+b$
B$c$$d$$X=c+d$
$Y=a+c$$Z=b+d$$a+b+c+d$

2×2のクロス集計表ではYuleのQは,

$\displaystyle Q = \frac{ad-bc}{ad+bc}$

と定義する。

$-1 \leq Q \leq 1$ である。

オッズ比(準備中)

No content available

$\displaystyle \phi=\frac{ad-bc}{\sqrt{W\cdot X \cdot Y \cdot Z}}$(Φ係数)

A$a$$b$$W=a+b$
B$c$$d$$X=c+d$
$Y=a+c$$Z=b+d$$a+b+c+d$

2×2のクロス集計表ではΦ係数の $\phi$ は,

$\displaystyle \phi = \frac{ad-bc}{\sqrt{W\cdot X \cdot Y \cdot Z}}$

と定義する。

$-1 \leq \phi \leq 1$ である。

YuleのQやΦ係数から統計的結果を導く基準(目安例)

YuleのQやΦ係数 $\phi$ から統計的結果を導く一つの目安として,

  • $Q, \phi =0$ $\leftrightarrow$ 独立
  • $0< Q, \phi \leqq 0.5$ $\leftrightarrow$ 連関なし
  • $0.5 \leqq Q, \phi \leqq 0.75$ $\leftrightarrow$ (中程度の)連関
  • $0.75 \leqq |r|$ $\leftrightarrow$ 強い連関
  • $Q, \phi=1$ $\leftrightarrow$ 完全に偏ったクロス集計表(強い相関)

がある。ただし, あくまでも一つの目安であり決まっている訳ではない。

因果関係について

因果関係との関係

No content available

【表計算】Excel・スプレッドシートでデータの関連を計算

散布図の作成

表計算ソフト(Excelなど)で散布図を作ってみよう。
※作業環境はGoogleスプレッドシートです。

作業手順

次のステップでレーダーチャートを作成する。

(1) データの範囲を指定する。
(2)【挿入】から【グラフ】を選択する。
(3)【設定】【散布図】を選択する。
(4)【カスタマイズ】でグラフを調整する。

★完成イメージ

手順.

(1) 次のデータを利用します。このデータの範囲を指定します。今回は、B列とC列のみを指定しました。

(2) 【挿入】から【グラフ】を選択します。

(3) 【設定】【散布図】を選択します。

(4) 必要に応じて【カスタマイズ】でグラフを調整すると「★完成イメージ」の散布図ができます。

相関係数CORREL()

CORREL関数

データの相関係数を表計算で計算する場合、
CORREL(データ範囲1, データ範囲2)
を利用する。

・データ範囲1, 2…データのセル範囲を指定。

例えば、[A1]:1, [A2] :2, [A3]:3, [B1]:2, [A2] :4, [A3]:6の場合、「=CORREL(A1:A3, B1:B3)」と入力すると1.0が出力されます。

クロス集計表の作成【ピボットテーブル】

表計算ソフト(Excelなど)でピボットテーブルを利用してクロス集計表を作ってみよう。
※作業環境はGoogleスプレッドシートです。

作業手順

次のステップでクロス集計表を作成する。

(1) データの範囲を指定する。
(2)【挿入】から【ピボットテーブル】を選択する。
(3)【ピボットテーブルの作成】で「新しいシート」か「既存のシート」のいずれかに作成するかを選択する。
(4)【ピボットテーブルエディタ】【行】 【列】 【値】 【フィルタ】に集計する項目を入れる。

★完成イメージ

手順.

(1) 次のデータを利用します。このデータの範囲を指定します。今回は、A1E10全体を指定しました。

(2) 【挿入】から【ピボットテーブル】を選択します。

(3) 【ピボットテーブルの作成】で「新しいシート」か「既存のシート」のいずれかに作成するかを選択します。

今回は、「既存のシート」を選択して、A12にピボットテーブルを作成します。

(4) 【ピボットテーブルエディタ】【行】 【列】 【値】 【フィルタ】に集計する項目を入れます。

今回は右にある「商品名」を【行】にドラッグ、「店舗名」を【列】にドラッグ、「売上金額(円)」を【値】にドラッグしました。

【値】【集計】の項目をSUMにすれば合計値を出力できます。また、AVERAGE等ほかのものにすれば他の値を出力できます。

【フィルタ】に項目をドラッグすれば、フィルタに入力した項目別に集計をすることができます。

【コード】Pythonでデータの関連を計算

散布図の作成scatter()

2変量のデータから散布図をPythonで出力してみよう。

Pythonコード

matplotlib.pyplotscatter()関数を利用して, 散布図を出力する。

scatter()の引数には, 散布図にする2つのデータを入力する。

入力例. heightweight のデータから散布図を表示する。

import matplotlib.pyplot as plt
import japanize_matplotlib

# データ
height = [150, 152, 155, 157, 158, 160, 161, 162, 163, 164,
          165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
          175, 176, 177, 178, 179, 180, 181, 182, 183, 185]
weight = [45, 47, 48, 50, 51, 53, 54, 55, 55, 56,
          57, 58, 59, 60, 61, 62, 63, 64, 64, 65,
          66, 67, 68, 69, 70, 71, 72, 73, 74, 75]

# 散布図の描画
plt.scatter(height, weight, color="skyblue")
plt.title("身長と体重の関係")
plt.xlabel("身長 (cm)")
plt.ylabel("体重 (kg)")
plt.grid(True)
plt.show()

matplotlibで日本語を利用する場合japanize_matplotlibを使う。必要であれば、次を行い事前にインストールしておく。

pip install japanize-matplotlib

相関係数(行列)corrcoef()

Pythonコード

numpyモジュールのcorrcoef()関数を利用し, 相関係数(行列)を出力する。

corrcoef(x,y)として, xyにデータを指定する。xx, xy, yx, yyの相関係数を並べた行列が出力される。

相関係数のみ出力する場合, corrcoef(x,y)[1,0]などと表記し, 行列の $(1, 0)$ 成分のみを出力する。

3変量以上の相関係数行列を出力する場合は, 各リスト(データ)をnumpy.array()ndarray型に変換しcorrcoef()を利用する。

入力例①. [1, 2, 3, 4, 5][4, 4, 7, 10, 12]のデータの相関係数行列と相関係数を出力する。

import numpy as np

x = [1, 2, 3, 4, 5]
y = [4, 4, 7, 10, 12]

print(np.corrcoef(x, y))
print(np.corrcoef(x, y)[1,0])

入力例②. [1, 2, 3, 4, 5][4, 4, 7, 10, 12], [-3, 0, -3, -4, -4]のデータの相関係数行列を出力する。

import numpy as np

x = [1, 2, 3, 4, 5]
y = [4, 4, 7, 10, 12]
z = [-3, 0, -3, -4, -4]

data = np.array([x, y, z])
corr_matrix = np.corrcoef(data)
print(corr_matrix)

コメントを残す