経済統計の使い方
統計初心者の社会人向けに、経済データの解説をしています。「まとめページ」をご覧くだされば、全体的な内容がわかると思います。
統計ソフト

Rによる固有値の計算法

主成分分析などでは固有値を使いますが、実際の行列の固有値や固有ベクトルを計算したことがありませんでした。ここで練習してみたいと思います。

行列を作成して固有値と固有ベクトルを計算します。全体の出力は以下の通りです。

> A<-matrix(c(1,3,4,5,10,3,8,2,4),nrow=3,ncol=3)
> A
     [,1] [,2] [,3]
[ 1,]   1    5    8
[ 2,]   3   10    2
[ 3,]   4    3    4
> eigenA=eigen(A)
> eigenA
eigen() decomposition
$values
 13.675708  4.851307 -3.527015

$vectors
          [,1]       [,2]       [,3]
[ 1,]0.5580377  0.5521427  0.8963008
[ 2,]0.6988830 -0.5612255 -0.1363940
[ 3,]0.4473884  0.6165748 -0.4219497

> eigenA$values*eigenA$vectors[,1]
[ 1] 7.631560 9.557720 6.118354
> A%*%eigenA$vectors[,1]
         [,1]
[ 1,]7.631560
[ 2,]9.557720
[ 3,]6.118354

行列の作成

まず、3行、3列の行列を作成します。9個の要素をc( )の中にいれます。その後に、行の数(nrow)、列の数(ncol)を指定します。

3行3列の行列をAという名前にします。

> A<-matrix(c(1,3,4,5,10,3,8,2,4),nrow=3,ncol=3)
> A
     [,1] [,2] [,3]
[ 1,]   1    5    8
[ 2,]   3   10    2
[ 3,]   4    3    4

固有値の計算

固有値の計算はeigen( )に行列名を入れれば計算できます。結果をeigenAとします。

固有値はeigenAに入っているもののうち、\$values の3つで、大きい順に、13.7,4.9,-3.5です。固有ベクトルは、\$vectors のそれぞれの列です。1列目が固有値13.7に対応しています。

> eigenA=eigen(A)
> eigenA
eigen() decomposition
$values
[ 1] 13.675708  4.851307 -3.527015

$vectors
          [,1]       [,2]       [,3]
[ 1,] 0.5580377  0.5521427  0.8963008
[ 2,] 0.6988830 -0.5612255 -0.1363940
[ 3,] 0.4473884  0.6165748 -0.4219497

確認

固有値と固有ベクトルをかけたもの、行列と固有ベクトルをかけたものが等しくなるかどうか確認します。最も大きい固有値は、eigenA\$values[ 1]で、それに対応する固有ベクトルは、eigenA\$vectors[,1]です。両者を掛けると、(7.63 9.56 6.12)になります。

次に、行列Aに、固有ベクトルを掛けたものを計算します。行列とベクトルの積は%*%としなければ、要素の積になってしまうので、注意が必要です。また、結果は行列の形となっていますが、as.vector(A%*%eigenA\$vectors[,1] )とすれば、ベクトルの形になります。両方とも答えは、(7.63、9.56、6.12)となり、等しいことがわかります。

> eigenA$values[ 1]*eigenA$vectors[,1]
[ 1] 7.631560 9.557720 6.118354
> A%*%eigenA$vectors[,1]
         [,1]
[ 1,] 7.631560
[ 2,] 9.557720
[ 3,] 6.118354
 

コマンドのみの表記

A<-matrix(c(1,3,4,5,10,3,8,2,4),nrow=3,ncol=3)
A
eigenA=eigen(A)
eigenA
eigenA$values[ 1]*eigenA$vectors[,1]
A%*%eigenA$vectors[,1]

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA