R入門」 5.7 行列に対する諸機能

「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 