「R入門」 5.7 行列に対する諸機能 10月23日 (木) 発表者 大城亜里沙 行列の諸機能 行列: 2重の添字を持つ配列のこと。 Rには行列専用の多くの演算と関数がある。 (例) ・ 転置行列 : t( ) ・ 行列Aの行数 : nrow( A ) ・ 行列Aの列数 : ncol( A ) 行列の積 ・演算子 %*% 行列の積 A% * % B ( AとBは同じサイズの正方行列 ) n‐ ベクトルとして使える。 ・ n 1 行列や1 n 行列 ・ x % * % A% * % x 2次形式を表す。(x:ベクトル) (例) x1 a11 a12 x , A x2 a21 a22 a21 a12 とすると、 x % * % A% * % x x t Ax a11 a12 x1 x1 , x2 a21 a22 x2 a11 x12 2a12 x1 x2 a22 x22 関数crossprod( ) と 関数diag( ) 関数crossprod( ) は「クロス積」を作る。 より効率的 crossprod(X,y) t(X) %*% y 関数diag( ) は引数によって意味が異なる。 (例) ①引数がベクトルの場合 ②引数が行列の場合 V=(a,b,c) a 0 0 diag(v) 0 b 0 0 0 c 3×3の対角行列になる。 a11 a12 A a a 21 22 diag( A) a11 , a22 ベクトルになる。 線形方程式 線形方程式 b <- A %*% x ベクトルxがこの連立方程式の解であり、 solve(A,b) これを解くことにより、 解xが得られる 固有値と固有ベクトル 関数 eigen(Sm) は対象行列Smの固有値と固有ベクトルを計算する。 (values) (例) 1 2 Sm 2 1 > > (vectors) の固有値と固有ベクトルを求める。 ev <- eigen(Sm) ev $values [1] 3 -1 $vectors [ ,1] [ ,2] [1, ] 0.707… 0.707… [2, ] 0.707… 0.707… 固有値だけが欲しい場合 >evals <- eigen(Sm) $values とすればよい。 固有ベクトルだけが欲しい場合も 同様である。 特異値分解 関数svd (M) は行列引数Mを取り、Mの特異値分解を計算する 特異値分解とは、 M(m×n) を M=UDVT の形に分解する手法. U ・・・列正規直交行列(m×n) (UTU=E ,UUT E ) D ・・・対角行列(n×n) V ・・・正規直交行列(m×n) ( VTV=VVT=E ) 特異値分解は M = U %*% D %*% t(V)と表される。 最小自乗法 関数lsfit( ) は最小自乗法による当てはめの結果を与えるリストを返す。 > ans <- lsfit(X,y ) ( X:計画行列 ,y:観測地のベクトル) ヘルプ機能参照 宿題 ① 関数diag(k)の引数がスカラーの場合はどのように表され るか。ただし、引数はk=3とする。 ② 対象行列Smの固有ベクトルを求めよ。 2 1 Sm 1 0
© Copyright 2024 ExpyDoc