MENU

R でコレスポンデンス分析の計算を Step by Step で確認する

コレスポンデンス分析(対応分析とも言う) は、大きな分割表に集計されたデータを見やすくする分析方法。

二次元 つまり X軸とY軸に変換して、散布図にして傾向を見る。

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

コレスポンデンス分析とは?

コレスポンデンス分析とは、対応分析とも呼ばれ、分割表に集計したデータを、行と列それぞれ特徴を分析し、二次元散布図にして傾向を眺めてみる分析方法だ。

三次元も可能だが、二次元が一般的で見やすいと思う。

過去記事はこちら。

コレスポンデンス分析の実際例

サンプルデータ

MASS パッケージの caithデータを使用する。

MASS パッケージを使う準備をする。

MASS は統計ソフトRをインストールした時に、同時にインストールされているので、改めてのインストールは不要。

library(MASS)

caith データは、スコットランドのケイスネス (Caithness)に住む人々の目(光彩)の色と毛髪の色を集計した行列データである。

> caith
       fair red medium dark black
blue    326  38    241  110     3
light   688 116    584  188     4
medium  343  84    909  412    26
dark     98  48    403  681    85

実際に分析してみる

分析するための関数はcorresp()である。

行列をcorresp()内に入れる。

nf=で次元の数を指定する。

nf=2と指定すると最終的に二次元プロットになる。

First canonical correlationは、特異値 Singular values とも言われ、固有値 Eigenvaluesの平方根である。

行(row)と列(column)のスコアが計算される。標準座標 Standard coordinatesとも言われる。

corresp1 <- corresp(caith,nf=2)
corresp1
corresp1$cor^2 # eigenvalues
biplot(corresp1) # biplot
corresp1$rscore %*% diag(corresp1$cor)
corresp1$cscore %*% diag(corresp1$cor)
> corresp1 <- corresp(caith, nf=2)
> corresp1
First canonical correlation(s): 0.4463684 0.1734554 

 Row scores:
              [,1]       [,2]
blue    0.89679252  0.9536227
light   0.98731818  0.5100045
medium -0.07530627 -1.4124778
dark   -1.57434710  0.7720361

 Column scores:
              [,1]       [,2]
fair    1.21871379  1.0022432
red     0.52257500  0.2783364
medium  0.09414671 -1.2009094
dark   -1.31888486  0.5992920
black  -2.45176017  1.6513565

> corresp1$cor^2 # eigenvalues
[1] 0.19924475 0.03008677

プロットした結果はこちら。

黒字が目の色、赤字が髪の毛の色である。

目の色と髪の色は同じ傾向があり、暗い色と明るい色が一緒になっていると言える。

X軸はプラス値が暗い色、マイナス値が明るい色と言える。

Y軸は、解釈が思い浮かばない。

プロットの値は、以下の計算結果である。

行のスコアと列のスコアそれぞれにCanonical Correlationを掛けている。

スコアの右側から、Canonical Correlationを要素とする対角行列を掛けるとプロット値が計算される。

主成分座標(Principal coordinates)と呼ばれる。

行のプロット(黒)は左と下の目盛り、列のプロット(赤)は右と上の目盛りを使っている。

「二つ」のセット(黒と赤)を一緒にプロットしているのが biplot のゆえんである。

> corresp1$rscore %*% diag(corresp1$cor)
              [,1]        [,2]
blue    0.40029985  0.16541100
light   0.44070764  0.08846303
medium -0.03361434 -0.24500190
dark   -0.70273880  0.13391383

> corresp1$cscore %*% diag(corresp1$cor)
              [,1]        [,2]
fair    0.54399533  0.17384449
red     0.23326097  0.04827895
medium  0.04202412 -0.20830421
dark   -0.58870853  0.10395044
black  -1.09438828  0.28643670

別のパッケージで分析・プロットしてみる

ca パッケージでも分析・プロットができる。

インストールをしてから利用する。

install.packages("ca")

ca()で分析する。

library(ca)
ca1 <- ca(caith)
plot(ca1)
plot(ca1,mass=TRUE)
ca1$rowcoord %*% diag(ca1$sv)
ca1$colcoord %*% diag(ca1$sv)

固有値と行・列それぞれのスコアが計算される。

スコアは標準座標 Standard coordinatesとも言われる。

$rowcoord, $colcoordで、行と列の標準座標を指定している。

$svは特異値 Singular values(固有値の平方根)だ。

> ca1

 Principal inertias (eigenvalues):
           1        2        3       
Value      0.199245 0.030087 0.000859
Percentage 86.56%   13.07%   0.37%   


 Rows:
            blue    light    medium      dark
Mass    0.133284 0.293299  0.329311  0.244106
ChiDist 0.437855 0.450620  0.247359  0.715398
Inertia 0.025553 0.059557  0.020149  0.124932
Dim. 1  0.896793 0.987318 -0.075306 -1.574347
Dim. 2  0.953623 0.510004 -1.412478  0.772036


 Columns:
            fair      red    medium      dark     black
Mass    0.270095 0.053091  0.396696  0.258214  0.021905
ChiDist 0.571235 0.265854  0.212526  0.597901  1.132193
Inertia 0.088134 0.003752  0.017918  0.092308  0.028079
Dim. 1  1.218714 0.522575  0.094147 -1.318885 -2.451760
Dim. 2  1.002243 0.278336 -1.200909  0.599292  1.651357

プロットの結果はこちら。

corresp()のbiplot()と違って、行も列も同じ目盛りを使っている。

青字が目の色で、赤字が髪の毛の色だ。

Dimension1(X軸)は、目の色と髪の色が、プラス値で暗い色、マイナス値で明るい色であることはわかる。

Dimension2(Y軸)の意味合いは明らかでない。

X軸とY軸のラベルに86.6%と13.1%と書いてある。

これは固有値全体における割合を示している。

Dimension1は86.6%で固有値の大半を占めていて、Dimension1だけで大半説明がつくという意味になる。

ゆえにDimension2にうまい解釈がつかないのも納得できる。

mass=TRUEを追加すると、nの大きさによってポイントの大きさが変わる。

nが多いとポイントが大きくなる。

プロットの座標は、標準座標に特異値(Singular values)を掛けた主成分座標(Principal coordinates)を用いている。

プロットには一列目をDimension1(X軸)、二列目をDimension2(Y軸)に用いている。

> ca1$rowcoord %*% diag(ca1$sv)
              [,1]        [,2]         [,3]
blue    0.40029985  0.16541100 -0.064157519
light   0.44070764  0.08846303  0.031773257
medium -0.03361434 -0.24500190 -0.005552885
dark   -0.70273880  0.13391383  0.004345377

> ca1$colcoord %*% diag(ca1$sv)
              [,1]        [,2]         [,3]
fair    0.54399533  0.17384449 -0.012522082
red     0.23326097  0.04827895  0.118054940
medium  0.04202412 -0.20830421 -0.003236468
dark   -0.58870853  0.10395044 -0.010116315
black  -1.09438828  0.28643670  0.046135954

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

コレスポンデンス分析をstep by stepで実施してみる

標準残差 Standard Residuals を計算することがコレスポンデンス分析のキモとなる。

標準残差は、二乗して合計すると独立性の検定に使うカイ二乗 $ \chi^2 $ 値になる。

標準残差は、観察値と期待値の「隔たり」を表現したものになる。

n <- sum(caith)
f.row <- rowSums(caith)
f.col <- colSums(caith)
f.mat <- caith
z.ij <- matrix(rep(0,20),nr=4)
for (i in 1:4){
  for (j in 1:5){
    z.ij[i,j] <- (f.mat[i,j]/n-f.row[i]*f.col[j]/n^2)/(sqrt(f.row[i]*f.col[j])/n)
  }
}
z.ij # Standard Residuals 標準残差
Q.t <- z.ij %*% t(z.ij)
Q <- t(z.ij) %*% z.ij
eigen.row <- eigen(Q.t) # 行の特徴を固有値・固有ベクトルに凝縮する
eigen.col <- eigen(Q) # 列の特徴を固有値・固有ベクトルに凝縮する
# 行と列の周辺割合の平方根の逆数で固有ベクトルを規準化したものがスコア(標準座標)になる
D.r <- diag(1/sqrt(f.row/n))
D.c <- diag(1/sqrt(f.col/n))
# 標準座標 Standard coordinates
D.r %*% eigen.row$vectors
D.c %*% eigen.col$vectors
# 主成分座標 Pricipal coordinates
D.r %*% eigen.row$vectors %*% diag(sqrt(eigen.row$values))
D.c %*% eigen.col$vectors %*% diag(sqrt(eigen.col$values))

標準残差は以下のように計算される。

> z.ij # Standard Residuals 標準残差
           [,1]          [,2]        [,3]        [,4]        [,5]
[1,]  0.1292162 -0.0002629922 -0.03538203 -0.07544543 -0.04372599
[2,]  0.1723046  0.0477768696 -0.02328106 -0.14838434 -0.07088969
[3,] -0.0847428 -0.0142960921  0.10542144 -0.02932898 -0.02810479
[4,] -0.1859232 -0.0355710546 -0.07078163  0.25246345  0.14265843

標準残差の行方向の二乗にあたるQ.tと列方向の二乗に当たるQは以下の通り。

> Q.t <- z.ij %*% t(z.ij)
> Q <- t(z.ij) %*% z.ij

> Q.t
            [,1]        [,2]         [,3]         [,4]
[1,]  0.02555277  0.03737037 -0.011234763 -0.046795636
[2,]  0.03737037  0.05955678 -0.011394621 -0.079661660
[3,] -0.01123476 -0.01139462  0.020149468 -0.002611605
[4,] -0.04679564 -0.07966166 -0.002611605  0.124931987
> Q
             [,1]          [,2]          [,3]        [,4]         [,5]
[1,]  0.088134492  1.602317e-02 -4.357128e-03 -0.07976947 -0.042006558
[2,]  0.016023167  3.752377e-03 -9.232812e-05 -0.01563060 -0.008048110
[3,] -0.004357128 -9.232812e-05  1.791761e-02 -0.01483772 -0.009862943
[4,] -0.079769470 -1.563060e-02 -1.483772e-02  0.09230791  0.050658169
[5,] -0.042006558 -8.048110e-03 -9.862943e-03  0.05065817  0.028078616

Q.tとQそれぞれから固有値・固有ベクトルを求めると以下の通り。固有値($values)が行、列ともに3つまでは同じ値であることがわかる。

> eigen.row <- eigen(Q.t) # 行の特徴を固有値・固有ベクトルに凝縮する
> eigen.col <- eigen(Q) # 列の特徴を固有値・固有ベクトルに凝縮する

> eigen.row
eigen() decomposition
$values
[1]  1.992448e-01  3.008677e-02  8.594814e-04 -9.238255e-18

$vectors
            [,1]       [,2]        [,3]      [,4]
[1,] -0.32740153  0.3481491  0.79894718 0.3650806
[2,] -0.53470247  0.2762034 -0.58694655 0.5415706
[3,]  0.04321499 -0.8105596  0.10869354 0.5738565
[4,]  0.77783929  0.3814407 -0.07323162 0.4940710

> eigen.col
eigen() decomposition
$values
[1]  1.992448e-01  3.008677e-02  8.594814e-04  7.761727e-18 -5.800482e-18

$vectors
            [,1]       [,2]        [,3]       [,4]        [,5]
[1,] -0.63337328  0.5208721  0.22198126 -0.5274987  0.00000000
[2,] -0.12040878  0.0641327 -0.92784507 -0.1825513 -0.29524104
[3,] -0.05929716 -0.7563782  0.06953154 -0.6464176  0.04105527
[4,]  0.67018848  0.3045289  0.17534533 -0.4302105 -0.49222197
[5,]  0.36286535  0.2444040 -0.23291035 -0.2923755  0.81784150

行と列の周辺割合(f.row/n, f.col/n)の平方根の逆数で固有ベクトルを規準化したものがスコアになる。

「割合の平方根の逆数」ベクトルの対角行列(D.r, D.c)をそれぞれ左から掛ける。

D.r, D.cは以下の通り。

> # 行と列の周辺割合の平方根の逆数で固有ベクトルを規準化したものがスコア(標準座標)になる
> D.r <- diag(1/sqrt(f.row/n))
> D.c <- diag(1/sqrt(f.col/n))

> D.r
         [,1]     [,2]     [,3]  [,4]
[1,] 2.739121 0.000000 0.000000 0.000
[2,] 0.000000 1.846481 0.000000 0.000
[3,] 0.000000 0.000000 1.742596 0.000
[4,] 0.000000 0.000000 0.000000 2.024

> D.c
         [,1]     [,2]    [,3]     [,4]     [,5]
[1,] 1.924164 0.000000 0.00000 0.000000 0.000000
[2,] 0.000000 4.340007 0.00000 0.000000 0.000000
[3,] 0.000000 0.000000 1.58771 0.000000 0.000000
[4,] 0.000000 0.000000 0.00000 1.967931 0.000000
[5,] 0.000000 0.000000 0.00000 0.000000 6.756667

固有ベクトルと掛け算するとスコアになる。

標準座標 Standard coordinates とも言われる。

> # 標準座標 Standard coordinates
> D.r %*% eigen.row$vectors
            [,1]       [,2]       [,3] [,4]
[1,] -0.89679252  0.9536227  2.1884132    1
[2,] -0.98731818  0.5100045 -1.0837859    1
[3,]  0.07530627 -1.4124778  0.1894089    1
[4,]  1.57434710  0.7720361 -0.1482208    1

> D.c %*% eigen.col$vectors
            [,1]       [,2]       [,3]       [,4]        [,5]
[1,] -1.21871379  1.0022432  0.4271282 -1.0149937  0.00000000
[2,] -0.52257500  0.2783364 -4.0268545 -0.7922741 -1.28134829
[3,] -0.09414671 -1.2009094  0.1103959 -1.0263237  0.06518388
[4,]  1.31888486  0.5992920  0.3450676 -0.8466247 -0.96865900
[5,]  2.45176017  1.6513565 -1.5736976 -1.9754840  5.52588230

上記の結果の二列目までが、corresp()やca()の結果と一致する。

第一成分は、符号が逆であるが、同じものと考えてよい。

> corresp1
First canonical correlation(s): 0.4463684 0.1734554 

 Row scores:
              [,1]       [,2]
blue    0.89679252  0.9536227
light   0.98731818  0.5100045
medium -0.07530627 -1.4124778
dark   -1.57434710  0.7720361

 Column scores:
              [,1]       [,2]
fair    1.21871379  1.0022432
red     0.52257500  0.2783364
medium  0.09414671 -1.2009094
dark   -1.31888486  0.5992920
black  -2.45176017  1.6513565

Dim.1, Dim.2 の行を見ると、上記の最初の 2 列と同じ値であることがわかる。

> ca1

 Principal inertias (eigenvalues):
           1        2        3       
Value      0.199245 0.030087 0.000859
Percentage 86.56%   13.07%   0.37%   


 Rows:
            blue    light    medium      dark
Mass    0.133284 0.293299  0.329311  0.244106
ChiDist 0.437855 0.450620  0.247359  0.715398
Inertia 0.025553 0.059557  0.020149  0.124932
Dim. 1  0.896793 0.987318 -0.075306 -1.574347
Dim. 2  0.953623 0.510004 -1.412478  0.772036


 Columns:
            fair      red    medium      dark     black
Mass    0.270095 0.053091  0.396696  0.258214  0.021905
ChiDist 0.571235 0.265854  0.212526  0.597901  1.132193
Inertia 0.088134 0.003752  0.017918  0.092308  0.028079
Dim. 1  1.218714 0.522575  0.094147 -1.318885 -2.451760
Dim. 2  1.002243 0.278336 -1.200909  0.599292  1.651357

標準座標 Standard coordinatesに、右側から固有値の平方根(特異値 Singular values)を要素とする対角行列を掛けると、主成分座標 Principal coordinatesになる。

これがcorresp()やca()のプロット座標になっている。

左から一列目をDimension1(X軸)に、二列目をDimension2(Y軸)にしている。

> # 主成分座標 Pricipal coordinates
> D.r %*% eigen.row$vectors %*% diag(sqrt(eigen.row$values))
            [,1]        [,2]         [,3] [,4]
[1,] -0.40029985  0.16541100  0.064157519  NaN
[2,] -0.44070764  0.08846303 -0.031773257  NaN
[3,]  0.03361434 -0.24500190  0.005552885  NaN
[4,]  0.70273880  0.13391383 -0.004345377  NaN
警告メッセージ:
sqrt(eigen.row$values) で: 計算結果が NaN になりました

> D.c %*% eigen.col$vectors %*% diag(sqrt(eigen.col$values))
            [,1]        [,2]         [,3]          [,4] [,5]
[1,] -0.54399533  0.17384449  0.012522082 -2.827760e-09  NaN
[2,] -0.23326097  0.04827895 -0.118054940 -2.207266e-09  NaN
[3,] -0.04202412 -0.20830421  0.003236468 -2.859325e-09  NaN
[4,]  0.58870853  0.10395044  0.010116315 -2.358686e-09  NaN
[5,]  1.09438828  0.28643670 -0.046135954 -5.503674e-09  NaN
警告メッセージ:
sqrt(eigen.col$values) で: 計算結果が NaN になりました

固有値・固有ベクトルとは?

固有値・固有ベクトルとは、データから作ったデータの特徴を表す行列を、変換して計算した値・ベクトルと言える。

たとえば、データから作った特徴の行列を A とする。

下記を満たす λ が固有値、x が固有ベクトルと言われる。

$$ \boldsymbol{Ax} = \lambda \boldsymbol{x} $$

固有値、固有ベクトルはいくつも存在する。

上記Q.tに関しては、eigen()で求めると4つ計算される。

特徴の行列(今回はQ.t)の行(または列)と同じ数だけ計算される。

データから作った行列を、ギュッと凝縮したものが、固有値・固有ベクトルだと言える。

> Q.t
            [,1]        [,2]         [,3]         [,4]
[1,]  0.02555277  0.03737037 -0.011234763 -0.046795636
[2,]  0.03737037  0.05955678 -0.011394621 -0.079661660
[3,] -0.01123476 -0.01139462  0.020149468 -0.002611605
[4,] -0.04679564 -0.07966166 -0.002611605  0.124931987

> eigen.row <- eigen(Q.t) # 行の特徴を固有値・固有ベクトルに凝縮する
> eigen.row
eigen() decomposition
$values
[1]  1.992448e-01  3.008677e-02  8.594814e-04 -9.238255e-18

$vectors
            [,1]       [,2]        [,3]      [,4]
[1,] -0.32740153  0.3481491  0.79894718 0.3650806
[2,] -0.53470247  0.2762034 -0.58694655 0.5415706
[3,]  0.04321499 -0.8105596  0.10869354 0.5738565
[4,]  0.77783929  0.3814407 -0.07323162 0.4940710

検算してみると $ \boldsymbol{Ax} = \lambda \boldsymbol{x} $ であることが確認できる。

## 左辺
> Q.t %*% eigen.row$vector[,1]
            [,1]
[1,] -0.06523304
[2,] -0.10653666
[3,]  0.00861036
[4,]  0.15498040

## 右辺
> matrix(eigen.row$value[1]*eigen.row$vector[,1])
            [,1]
[1,] -0.06523304
[2,] -0.10653666
[3,]  0.00861036
[4,]  0.15498040

Singular Value DecompositionでStep by step

さきほどはeigen()を使って、固有値・固有ベクトルを求めたが、svd()を使う方法もある。

SVD は、Singular Value Decomposition の頭文字語で、特異値(Singular values)と固有ベクトルに分解する方法だ。

特異値は、固有値の平方根だ。

canonical correlationとも呼ばれる。

標準残差行列を以下のように分解できる。

$$ \boldsymbol{z_{ij}} = \boldsymbol{U D_{\alpha} V^T } $$

ここで $ D_{\alpha} $ は、特異値を要素とする対角行列、U、V はそれぞれ、行と列の固有ベクトルである。

S.svd <- svd(z.ij) # Singular Value Decompsition
S.svd$d # Singular values
S.svd$d^2 # Eigenvalues or principal inertia
S.svd$u # Eigenvector of row
S.svd$v # Eigenvector of column
S.svd$u %*% diag(S.svd$d) %*% t(S.svd$v) # 標準残差行列
z.ij # for confirmation
D.r %*% S.svd$u # 標準座標 Standard coordinates
D.c %*% S.svd$v # 標準座標 Standard coordinates
D.r %*% S.svd$u %*% diag(S.svd$d) # 主成分座標 Principal coordinates
D.c %*% S.svd$v %*% diag(S.svd$d) # 主成分座標 Principal coordinates

特異値 Singular values の二乗が固有値になる。

> S.svd$d # Singular values
[1] 4.463684e-01 1.734554e-01 2.931691e-02 1.829859e-17
> S.svd$d^2 # Eigenvalues
[1] 1.992448e-01 3.008677e-02 8.594814e-04 3.348386e-34

行の固有ベクトルと列の固有ベクトルは以下の通り。

> S.svd$u # Eigenvector of row
            [,1]       [,2]        [,3]      [,4]
[1,]  0.32740153  0.3481491 -0.79894718 0.3650806
[2,]  0.53470247  0.2762034  0.58694655 0.5415706
[3,] -0.04321499 -0.8105596 -0.10869354 0.5738565
[4,] -0.77783929  0.3814407  0.07323162 0.4940710

> S.svd$v # Eigenvector of column
            [,1]       [,2]        [,3]        [,4]
[1,]  0.63337328  0.5208721 -0.22198126 -0.06089658
[2,]  0.12040878  0.0641327  0.92784507 -0.31434151
[3,]  0.05929716 -0.7563782 -0.06953154 -0.03384428
[4,] -0.67018848  0.3045289 -0.17534533 -0.53859621
[5,] -0.36286535  0.2444040  0.23291035  0.77862039

特異値を成分とした対角行列の左右から、行の固有ベクトル U と列の固有ベクトル V (の転置行列)を掛けると、もとの標準残差行列になる。

以下の式の通りだ。

$$ \boldsymbol{z_{ij}} = \boldsymbol{U D_{\alpha} V^T} $$

> S.svd$u %*% diag(S.svd$d) %*% t(S.svd$v) # 標準残差行列
           [,1]          [,2]        [,3]        [,4]        [,5]
[1,]  0.1292162 -0.0002629922 -0.03538203 -0.07544543 -0.04372599
[2,]  0.1723046  0.0477768696 -0.02328106 -0.14838434 -0.07088969
[3,] -0.0847428 -0.0142960921  0.10542144 -0.02932898 -0.02810479
[4,] -0.1859232 -0.0355710546 -0.07078163  0.25246345  0.14265843

> z.ij # for confirmation
           [,1]          [,2]        [,3]        [,4]        [,5]
[1,]  0.1292162 -0.0002629922 -0.03538203 -0.07544543 -0.04372599
[2,]  0.1723046  0.0477768696 -0.02328106 -0.14838434 -0.07088969
[3,] -0.0847428 -0.0142960921  0.10542144 -0.02932898 -0.02810479
[4,] -0.1859232 -0.0355710546 -0.07078163  0.25246345  0.14265843

固有ベクトルに左側から「割合の平方根の逆数」ベクトルの対角行列(D.r, D.c)をそれぞれ左から掛けると、スコアになるのは上述と同様。

corresp()やca()が返すスコアだ。

標準座標 Standard coordinatesとも言う。

> D.r %*% S.svd$u # 標準座標 Standard coordinates
            [,1]       [,2]       [,3] [,4]
[1,]  0.89679252  0.9536227 -2.1884132    1
[2,]  0.98731818  0.5100045  1.0837859    1
[3,] -0.07530627 -1.4124778 -0.1894089    1
[4,] -1.57434710  0.7720361  0.1482208    1

> D.c %*% S.svd$v # 標準座標 Standard coordinates
            [,1]       [,2]       [,3]        [,4]
[1,]  1.21871379  1.0022432 -0.4271282 -0.11717498
[2,]  0.52257500  0.2783364  4.0268545 -1.36424450
[3,]  0.09414671 -1.2009094 -0.1103959 -0.05373491
[4,] -1.31888486  0.5992920 -0.3450676 -1.05992031
[5,] -2.45176017  1.6513565  1.5736976  5.26087829

さらに右側から特異値を要素とする対角行列を掛けると、主成分座標 Principal coordinates になる。

これがcorresp()やca()のプロット座標になっている。

左から一列目をDimension1(X軸)に、二列目をDimension2(Y軸)にしている。

> D.r %*% S.svd$u %*% diag(S.svd$d) # 主成分座標 Principal coordinates
            [,1]        [,2]         [,3]         [,4]
[1,]  0.40029985  0.16541100 -0.064157519 1.829859e-17
[2,]  0.44070764  0.08846303  0.031773257 1.829859e-17
[3,] -0.03361434 -0.24500190 -0.005552885 1.829859e-17
[4,] -0.70273880  0.13391383  0.004345377 1.829859e-17

> D.c %*% S.svd$v %*% diag(S.svd$d) # 主成分座標 Principal coordinates
            [,1]        [,2]         [,3]          [,4]
[1,]  0.54399533  0.17384449 -0.012522082 -2.144138e-18
[2,]  0.23326097  0.04827895  0.118054940 -2.496376e-17
[3,]  0.04202412 -0.20830421 -0.003236468 -9.832734e-19
[4,] -0.58870853  0.10395044 -0.010116315 -1.939505e-17
[5,] -1.09438828  0.28643670  0.046135954  9.626668e-17

まとめ

コレスポンデンス分析をcorresp()とca()を使って実施してみた。

さらにeigen()やsvd()を使って、step by stepで実施してみた。

分割表にまとめられた結果が、行の要素と列の要素それぞれ、どのような関係にあるかを図によって眺めることができる興味深い方法だ。

大きな分割表で、行と列の対応が把握しきれない場合、有効な分析方法と言える。

参考になれば。

参考文献

対応分析によるデータ解析

https://www.kwansei.ac.jp/s_sociology/attached/6779_56340_ref.pdf

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次