MENU

【無料プレゼント付き】学会発表・論文投稿に必要な統計を最短で学ぶことができる無料メルマガ

R でコレスポンデンス分析を実施する方法

対応分析(コレスポンデンス分析)とは、人の属性の類似性(もしくは対応)を図に表す分析。

結果を見るといろいろと解釈したくなる、面白い分析。

R では、caというパッケージで分析可能。

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




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

対応分析 コレスポンデンス分析のパッケージ ca をインストールして準備する

最初の一回だけインストールをする。

install.packages("ca")

caパッケージを呼び出す。

library(ca)

次に例題のデータを読み込む。

対応分析 コレスポンデンス分析用の例題データ

2番さんから30番さんに受動喫煙の被害にあった場所を回答してもらったデータ。

1 が被害にあったことを示し、0 は被害にあってないことを示している。

27人のデータ。14番と28番が無回答。

> table(dat$NO, dat$basho)
カラオケ バー パチンコ レストラン 駅 家 学校 居酒屋 車内 職場 食堂
2         1    0        1          1  0  1    1      1    0    1    1
3         0    0        0          0  0  0    0      0    1    0    0
4         0    0        0          1  1  0    0      1    0    1    0
5         1    1        0          1  0  0    0      1    1    1    1
6         1    0        0          1  0  0    0      1    1    0    0
7         1    1        1          1  1  1    0      1    1    1    1
8         1    1        1          1  0  0    0      1    1    1    1
9         1    1        1          1  0  1    0      1    1    1    1
10        0    0        0          1  1  1    0      1    0    0    1
11        1    1        1          1  0  1    0      1    1    1    0
12        0    0        0          1  0  1    0      0    0    0    0
13        0    0        0          1  1  0    0      0    0    0    0
15        1    0        0          1  0  0    0      1    1    1    0
16        1    1        1          1  1  0    0      1    0    1    0
17        0    0        1          0  0  0    0      1    0    0    0
18        0    0        0          0  0  1    1      0    0    1    0
19        1    0        0          1  1  1    0      1    1    1    0
20        1    0        0          1  1  1    0      1    0    1    1
21        1    1        0          1  0  1    0      1    1    0    0
22        0    0        0          0  0  0    0      0    1    1    0
23        0    0        0          1  0  1    0      0    0    1    0
24        1    1        0          1  0  0    0      1    0    0    0
25        0    0        0          0  0  0    1      0    0    1    0
26        0    0        0          1  1  0    0      0    0    1    0
27        0    0        1          1  0  1    0      0    0    0    0
29        1    1        0          1  0  1    0      1    1    0    0
30        1    1        1          1  1  0    0      1    1    1    1

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




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

対応分析 コレスポンデンス分析の実際の方法は?

table()でオブジェクトを作り、
ca()をかければよい。

tab.NO.basho <- table(dat$NO, dat$basho)
ca.NO.basho <- ca(tab.NO.basho)
summary(ca.NO.basho)
plot(ca.NO.basho)

summary()で結果の概要が見られる。

Principal Inertia(固有値)1次元目と2次元目を使って、図に表すと属性の広がりと、個人の散らばりが視覚化できる。

視覚化にはplot()を使う。

> summary(ca.NO.basho)
Principal inertias (eigenvalues):
dim    value      %   cum%   scree plot
1      0.370047  30.3  30.3  ********
2      0.225220  18.5  48.8  *****
3      0.171709  14.1  62.9  ****
4      0.142078  11.6  74.5  ***
5      0.096621   7.9  82.4  **
6      0.075889   6.2  88.7  **
7      0.054686   4.5  93.2  *
8      0.043836   3.6  96.7  *
9      0.025404   2.1  98.8  *
10     0.014295   1.2 100.0
-------- -----
Total: 1.219786 100.0
Rows:
name   mass  qlt  inr    k=1 cor ctr     k=2 cor ctr
1  |    2 |   58  620   42 |  729 612  84 |    83   8   2 |
2  |    3 |    7  344   57 | -588  36   7 |  1712 307  95 |
3  |    4 |   29  536   32 |  -25   0   0 |  -841 535  92 |
4  |    5 |   51  348   20 | -223 104   7 |   341 243  26 |
5  |    6 |   29  341   26 | -420 161  14 |   443 179  25 |
6  |    7 |   73  198    8 | -157 185   5 |   -42  13   1 |
7  |    8 |   58  447   18 | -220 131   8 |   342 317  30 |
8  |    9 |   66  397   11 | -141  94   4 |   253 303  19 |
9  |   10 |   36  484   38 | -125  12   2 |  -774 472  97 |
10 |   11 |   58  422   13 | -142  76   3 |   304 347  24 |
11 |   12 |   15  119   38 |  113   4   1 |  -605 115  24 |
12 |   13 |   15  702   52 | -285  19   3 | -1727 683 193 |
13 |   15 |   36  207   20 | -160  38   3 |   335 169  18 |
14 |   16 |   51  158   22 | -192  69   5 |  -218  89  11 |
15 |   17 |   15   35   56 | -304  20   4 |   269  15   5 |
16 |   18 |   22  954  110 | 2416 951 346 |   135   3   2 |
17 |   19 |   51  140   16 |  -88  21   1 |  -211 119  10 |
18 |   20 |   51  449   21 |  -23   1   0 |  -477 448  52 |
19 |   21 |   44  371   22 | -304 153  11 |   363 218  26 |
20 |   22 |   15  184   44 |  147   6   1 |   807 178  42 |
21 |   23 |   22  186   32 |  369  78   8 |  -436 108  18 |
22 |   24 |   29  185   31 | -431 144  15 |   230  41   7 |
23 |   25 |   15  934  149 | 3380 919 451 |   429  15  12 |
24 |   26 |   22  620   41 |  104   5   1 | -1184 615 136 |
25 |   27 |   22   32   46 |   11   0   0 |  -287  32   8 |
26 |   29 |   44  371   22 | -304 153  11 |   363 218  26 |
27 |   30 |   66  195   15 | -229 195   9 |     4   0   0 |
Columns:
name   mass  qlt  inr    k=1 cor ctr     k=2 cor ctr
1  | カラオケ |  109  378   36 | -253 159  19 |   297 219  43 |
2  |     バー |   73  324   58 | -385 152  29 |   409 172  54 |
3  | パチンコ |   66   23   99 | -118   8   2 |   166  15   8 |
4  | レストラ |  161  446   45 | -160  74  11 |  -358 372  92 |
5  ||   66  743  121 | -186  15   6 | -1281 728 478 |
6  ||   95  108   98 |  298  71  23 |  -216  37  20 |
7  |     学校 |   22  956  244 | 3576 941 757 |   454  15  20 |
8  |   居酒屋 |  131  191   40 | -252 169  23 |    90  22   5 |
9  |     車内 |   95  510  120 | -358  83  33 |   813 427 278 |
10 |     職場 |  124  380   78 |  536 377  96 |   -47   3   1 |
11 |     食堂 |   58    9   61 |  -80   5   1 |   -71   4   1 |
Warning message:
In abbreviate(cnames.temp, 4) : abbreviate used with non-ASCII chars

対応分析 コレスポンデンス分析の視覚化

plot()で図が現れる。

2つの固有値をX軸とY軸にした散布図。

mass=T(TRUEの意味)を加えると、

plot(ca.NO.basho, mass=T)

同じ回答の複数人は、大きな〇で描かれる。

行(回答者)だけプロットするには、以下の通りにインプット。

plot(ca.NO.basho, mass=T, what=c("active","none"))

列(受動喫煙被害場所)をプロットするには、以下の通り。

plot(ca.NO.basho, mass=T, what=c("none","active"))

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


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

目次

まとめ

コレスポンデンス分析を R で行う方法を解説した。

参考になれば。

参考書籍

すぐわかるSPSSによるアンケートのコレスポンデンス分析

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

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次