1.12 行列演算によるデータの平均の計算

ここでは行列の演算を用いてデータの平均を計算する例を紹介する. まず,以下のようなデータを考えてみる.

##    Sepal.Length Sepal.Width Petal.Length Petal.Width
## 1           5.1         3.5          1.4         0.2
## 2           4.9         3.0          1.4         0.2
## 3           4.7         3.2          1.3         0.2
## 4           4.6         3.1          1.5         0.2
## 5           5.0         3.6          1.4         0.2
## 6           5.4         3.9          1.7         0.4
## 7           4.6         3.4          1.4         0.3
## 8           5.0         3.4          1.5         0.2
## 9           4.4         2.9          1.4         0.2
## 10          4.9         3.1          1.5         0.1

Sepal.Length, Sepal.Width, Petal.Length, Petal.Widthという4種類のデータがそれぞれ10観測されている. このとき,これらをサイズ\(10 \times 4\)の行列として見ることができる. 単純にそれぞれのデータの平均を計算するなら,例えばSepal.Lengthであれば,\((5.1 + 4.9 + \cdots + 4.4 + 4.9) / 10\)という計算をすれば良い.他のデータについてもそれぞれ平均を計算すれば良いが,行列演算で表現すると一度に計算することも可能である.

具体的には左から\((1/n)\boldsymbol 1_{n}\)というベクトルを掛けるだけである.ここで\(\boldsymbol 1_{n}\)とは\(n\)次元の要素が全て\(1\)であるようなベクトルである.これを\(1/n\)でスカラー倍しているので全ての要素が\(1/n\)であるベクトルである. 実際データ行列を\(X\)とすれば

\[ \begin{align} \frac1n \boldsymbol 1_{n} X &= \begin{pmatrix} 1/n & 1/n & \cdots & 1/n \end{pmatrix} \begin{pmatrix} x_{11} & x_{12} & \cdots & x_{1m} \\ x_{21} & x_{22} & \cdots & x_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ x_{n1} & x_{n2} & \cdots & x_{nm} \\ \end{pmatrix} \\ &= \begin{pmatrix} \frac1n \sum_{i=1}^n x_{i1} & \frac1n \sum_{i=1}^n x_{i2} & \cdots & \frac1n \sum_{i=1}^n x_{im} \end{pmatrix} \end{align} \] となり,\(1/n \sum_{i=1}^n x_{ij}\)というのは\(j\)列目の平均そのものであるので,結果がデータの平均を要素に持つベクトルであることがわかる.

例のデータで実際に計算して見ると

n <- nrow(X) # 行数
ones <- rep(1, n) # 1ベクトル
avgs <- (1/n)*ones %*% X # 1/n 1 X の計算
print(avgs)
##      Sepal.Length Sepal.Width Petal.Length Petal.Width
## [1,]         4.86        3.31         1.45        0.22

となり,平均が計算できていることが分かる.

Exercise 1.8 (行列演算の応用) 上記では行列演算による平均の計算を紹介した.\((1/n) \boldsymbol 1_{n} X\)は平均を計算するが,\(\boldsymbol 1_{n} X\)という\(1/n\)のスカラー倍をしない場合を考えてみよう.この演算の結果として得られるベクトルはどのようなベクトルになっているか答えよ.