nigoblog

技術系会社のCEOブログ~私的編~

R入門~データサイエンティストに必要な行列計算の知識~

今回もRについて書いていきます。

最近Rが多めですね。

今回のテーマは「行列」
データサイエンティストは統計によって様々な意思決定をします。
統計の中でも様々なデータ操作があるのですが、
そのために必要な行列の知識を今回は紹介していきます。

  • Rによる行列の作成
  • 対称行列
  • 単位行列
  • まとめ
  • 今回紹介した関数
  • 今回の参考図書

Rによる行列の作成

行列の作成には

matrix()

という関数を用います。

具体的には

data <- matrix(1:9, nrow=3, ncol=3)

とし、行と列を指定します。上記の場合
3x3の行列が作られます。
また、要素に

data <- matrix(c(1, 2, 3), nrow=3, ncol=3)

とすることでベクトルを指定することができます。
それでは早速様々な行列をみてみましょう。

対称行列

ある行列があり、
行と列が入れ替わっても同じ値となる行列を対称行列といいます。
数学的に定義すると

行列 A
行列 Aの転置行列 t(A)
の時
A = t(A)

転置行列はある行列に対し、行と列を入れ替えたものです。

Rの場合、

data <- matrix(~)
t(data)

とすることで転置行列を作成できます。

対称行列のチェックには次のような関数を作成します。

checkSym <- function(data){
    if(nrow(data) == ncol(data)){
      for(i in 1:nrow(data)){
        for(j in 1:ncol(data)){
          if(data[i,j] != data[j,i]){
            return('false')
          }
        }
      }
    }else{
      return('false')
    }
    return('true')                                                                                                                                                              
} 

行列の要素 i, j と j, iを比較し、
一つでも一致しなければfalse、全て一致するとtrueを返すようなプログラムです。
これによりある行列が対称行列であるかをチェックします。

実行例は

> data <- matrix(c(1, 1, 1), nrow=3, ncol=3)
> checkSym(data)
[1] "true"

> data <- matrix(c(1, 2, 3), nrow=3, ncol=3)
> checkSym(data)
[1] "false"

となります。
さらに要素 i = jの時に全て1ならば相関行列となります。

単位行列

単位行列単位行列とある行列Aをかけたとき、Aとなるような行列を単位行列といいます。
数学的に定義すると

単位行列 E
ある行列 A
E x A = A

つまり数字でいう1のような役割です。
Rでは

diag(n)

という関数で行と列がnの単位行列が作成できます。

まとめ

今回紹介したのは行列操作でもごく一部です。
まだまだ重要な行列操作があるのでどんどん知識を増やして行きたいです!

今回紹介した関数

行列の作成 matrix()
転置行列の作成 t()
単位行列の作成 diag()
行列の行数を返す nrow()
行列の列数を返す ncol()

今回の参考図書

マンガでわかる統計学 因子分析編

マンガでわかる統計学 因子分析編

意外と良いですよ?笑