LoginSignup
14
13

More than 5 years have passed since last update.

統計学を勉強していくその2 〜 2次元のデータ編

Last updated at Posted at 2014-11-24

統計検定を受けるのでRで統計学を基礎から勉強していく の続きです。

今回は2次元のデータの相関関係と回帰分析を取り上げます。

2次元のデータ

2つの変数$x$, $y$ からなる組 $(x, y)$ を観測して一連の観測値 $(x_1, y_1), (x_2, y_2), ..., (x_n, y_n)$ を得る場合、データ $\{(x_i, y_i)\}$ を 2次元のデータ という。

相関と回帰

  • 2次元のデータについて、変数 $x$, $y$ を対等のものと見る見方を 相関 という。
    $x$, $y$ の相互関係を調べるのが中心。→ 相関関係

  • 2次元のデータについて、変数 $y$ が $x$ に(あるいは $x$ が $y$ に) 従っているものと見る見方を 回帰 という。
    $y$ が $x$ から決定される様子や程度を調べるのが基本。→ 回帰分析

相関関係

散布図

2次元のデータを$\{(x, y)\}$ を $x-y$ 平面上の $n$ 個の点として図示したものを 散布図 という。

9人のメンバーの身長 $x$とバスト $y$ を測定した時の2次元データを
math
{(157, 78), (162, 88), (159, 80),
(159, 76), (155, 75), (161, 78),
(159, 90), (156, 82), (154, 74)}

とする。このデータの散布図を R で描くには以下のようにする。

> # まず身長とバストをそれぞれベクトルとして入力する
> x <- c(157, 162, 159, 159, 155, 161, 159, 156, 154)
> y <- c(78, 88, 80, 76, 75, 78, 90, 82, 74)
> # plot(x, y) 関数でプロットを行う
> plot(x, y)

すると下の図が出力される:
plot2D.png

相関係数

2次元のデータ $\{(x_i, y_i)\}$ について $x$ が増加すると $y$ も増加する、などの相関関係があるかどうかを調べる際に、相関の程度を示す指標として使われるのが ピアソンの 積率相関係数、あるいは単に相関係数とよばれるものである。
相関係数$r_{xy}$は以下のように定義される:

r_{xy} := \frac{\sum(x_i - \bar{x})(y_i - \bar{y})/n}{\sqrt{\sum(x_i - \bar{x})^2/n}\sqrt{\sum(y_i - \bar{y})^2/n}}
= \frac{\sum(x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum(x_i - \bar{x})^2}\sqrt{\sum(y_i - \bar{y})^2}}

ここで、中央の式の分母は変数 $x$, $y$ の標準偏差 $\sigma_x$, $\sigma_y$ の積である。分子は $x$ の偏差 $x - x_i$ と $y$ の偏差 $y - y_i$ を同時に考えた時の平均でありこれを 共分散 (covariance) とよぶ。共分散を $\sigma_{xy}^2$と書けば、相関係数は

r_{xy} = \frac{\sigma_{xy}^2}{\sigma_x \sigma_y}

と書ける。相関係数は $ -1 \leq r_{xy} \leq 1 $ の値を取る。

  • $r_{xy} > 0$ のとき、この2次元データには 正の相関 があるという。
  • $r_{xy} < 0$ のとき、この2次元データには 負の相関 があるという。
R で実習

まずは定義に従って相関係数を計算してみる。

> # x の標準偏差を求める
> sigma_x = sqrt(mean((x - mean(x))^2))
> sigma_x
[1] 2.538591
> # y の標準偏差を求める
> sigma_y = sqrt(mean((y - mean(y))^2))
> sigma_y
[1] 5.300827
> # x と y の共分散を求める
> sigma_xy2 = mean( (x - mean(x)) * (y - mean(y)) )
> sigma_xy2
[1] 7.666667
> # 相関係数を計算する
> r_xy = sigma_xy2 / (sigma_x * sigma_y)
> r_xy
[1] 0.5697315

次に、相関関数を計算する関数を使ってみる。

># cor() 関数の method 引数に "pearson" を指定することでピアソンの相関係数が計算できる。
> cor(x, y, method="pearson")
[1] 0.5697315

$r_{xy} = 0.5697315 $ と求まり、メンバーの身長とバストの間には弱い正の相関があることがうかがわれる。


回帰

最小二乗法

2次元のデータ $\{(x_i, y_i)\}$ を回帰の視点から見るとする。$y$ が $x$ にしたがって決定される関係があるとき、$x$ を 独立変数 (independent variable), $y$ を 従属変数 (dependent variable) という。この関係がおおよそ、一次式

y = a x + b

で説明されると仮定するときに、係数 $a$, $b$ の値をどのように決めるのが最適であるか?

最小二乗法 (method of least squares) は各点 $(x_i, y_i)$ の直線 $y(x) = a x + b$ からの $y$ 座標についての隔たり $y_i - y(x_i)$ の二乗の和が最小となるように $a$, $b$ を決定する方法である。

すなわち、二乗の和 $L(a, b)$ を

L(a, b) := \sum_{i=1}^n (y_i - y(x_i))^2 = \sum_{i=1}^n (y_i - (a x_i + b))^2

と定義した時に、$L(a, b)$ を最小にするように $a$, $b$ を決めればよい。

それには $L$ を $a$, $b$ で偏微分してそれぞれ 0 とおいた方程式を解けばよい。
結果だけ書くと、

a = \frac{\sum x_i y_i - n \bar{x} \bar{y}}{\sum x_i^2 - n \bar{x}^2}, \\
b = \bar{y} - a \bar{x} .

得られた直線の方程式を $y$ の $x$ 上への 回帰直線 あるいは 回帰方程式 という。

R で実習

身長とバストのデータ $\{(x_i, y_i)\}$ について回帰直線を求めてみる。

> # まずは定義に従って計算する。
> n = length(x)
> a = (sum(x * y) - n * mean(x) * mean(y)) / (sum(x^2) - n * mean(x)^2)
> b = mean(y) - a * mean(x)
> c(a, b)
[1]    1.189655 -107.854406
> # つぎに、Rの関数 lsfit(x, y) を使って求めてみる。
> f <- lsfit(x, y)
> f$coefficients          # 係数を見る。
  Intercept           X
-107.854406    1.189655

散布図に回帰直線を重ねて描くには、上の計算結果 a, b を使って、

 > plot(x, y) # まず散布図を描く
 > abline(b, a) # 回帰直線を引く。第一引数が切片、第二引数が傾き

とすればよい。または、lsfit(x, y) の計算結果 f を使って、

 > abline(f)

としてもよい。結果、下の図が得られる。

regression_line.png

このデータは相関関係が弱いため、回帰直線を求める意味が薄いことに注意すること。


参考

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13