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

[統計検定を受けるのでRで統計学を基礎から勉強していく](http://qiita.com/d_nishiyama85/items/e544523f19e3afaeb000) の続きです。

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

# 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 で描くには以下のようにする。

```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](https://qiita-image-store.s3.amazonaws.com/0/28313/5925fc57-3d09-55b4-81e0-862e78b2a349.png)

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

```math
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$と書けば、相関係数は

```math
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 で実習
まずは定義に従って相関係数を計算してみる。

```rb
> # 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
```

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

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

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

**********

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

```math
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)$ を

```math
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 とおいた方程式を解けばよい。
結果だけ書くと、

```math
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)\\}$ について回帰直線を求めてみる。

```r
> # まずは定義に従って計算する。
> 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
```

```rb
> # つぎに、Rの関数 lsfit(x, y) を使って求めてみる。
> f <- lsfit(x, y)
> f$coefficients          # 係数を見る。
  Intercept           X
-107.854406    1.189655
```
散布図に回帰直線を重ねて描くには、上の計算結果 a, b を使って、

```r
 > plot(x, y) # まず散布図を描く
 > abline(b, a) # 回帰直線を引く。第一引数が切片、第二引数が傾き
```
とすればよい。または、lsfit(x, y) の計算結果 f を使って、

```r
 > abline(f)
```
としてもよい。結果、下の図が得られる。 

![regression_line.png](https://qiita-image-store.s3.amazonaws.com/0/28313/3c692ae6-673a-2326-d159-0f6658d83213.png)

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

*******

# 参考
- [統計学入門](http://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E5%AD%A6%E5%85%A5%E9%96%80-%E5%9F%BA%E7%A4%8E%E7%B5%B1%E8%A8%88%E5%AD%A6-%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E6%95%99%E9%A4%8A%E5%AD%A6%E9%83%A8%E7%B5%B1%E8%A8%88%E5%AD%A6%E6%95%99%E5%AE%A4/dp/4130420658/ref=sr_1_1?s=books&ie=UTF8&qid=1413651740&sr=1-1&keywords=%E7%B5%B1%E8%A8%88%E5%AD%A6%E5%85%A5%E9%96%80)
- [R によるやさしい統計学](http://www.amazon.co.jp/R%E3%81%AB%E3%82%88%E3%82%8B%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E7%B5%B1%E8%A8%88%E5%AD%A6-%E5%B1%B1%E7%94%B0-%E5%89%9B%E5%8F%B2/dp/4274067106/ref=sr_1_1?s=books&ie=UTF8&qid=1413651767&sr=1-1&keywords=r%E3%81%AB%E3%82%88%E3%82%8B%E3%82%84%E3%81%95%E3%81%97%E3%81%84%E7%B5%B1%E8%A8%88%E5%AD%A6)