Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Tokyo.R コレスポンデンス分析の正しい使い方
bob3bob3
March 19, 2022
Science
1
1.1k
Tokyo.R コレスポンデンス分析の正しい使い方
マーケティングリサーチ(市場調査)の領域でよく使われるコレスポンデンス分析の正しい使い方の解説です。
クロス集計表の探索的分析に使います。
R言語による分析事例です。
Tokyo.Rでの発表資料です。
bob3bob3
March 19, 2022
Tweet
Share
More Decks by bob3bob3
See All by bob3bob3
Tokoy.R #99 パーマーステーションのペンギンたち #1
bob3bob3
1
530
Tokyo.R RStudioでグラフをちょっときれいに出力する - CairoとAGG -
bob3bob3
0
620
Tokyo.R #98 Rを学ぶのは難しい
bob3bob3
2
2.7k
TokyoWebmining#05 RでTwitterのソーシャルグラフっぽいものを描いてみる
bob3bob3
0
30
tokyor06_sem.pdf
bob3bob3
0
17
TokyoR#07 共分散構造分析
bob3bob3
0
22
TokyoR#06 ブランド・ポジショニングの分析
bob3bob3
0
23
TokyoR#11 自己組織化マップ
bob3bob3
0
25
TokyoR#22 アソシエーション分析
bob3bob3
0
16
Other Decks in Science
See All in Science
セミパラメトリックアプローチによる因果探索
sshimizu2006
0
130
2020年京都大学_電磁気学
kamakiri1225
0
650
Information law about COVID-19
yoshimine77
0
150
統計的因果推論の勉強会@2022
arumakan
4
2.4k
Behind the Scenes—and Science—of the Earth Observatory
jscarto
0
190
Accumulated Local Effects(ALE)で機械学習モデルを解釈する / TokyoR95
dropout009
2
2.9k
深層学習による自然言語処理 輪読会#1 資料
tok41
0
380
スマートシティとメタバースにおける人工知能技術の活用
miyayou
0
390
mROS 2:組込みデバイス向けのROS 2ノード軽量実行環境
takasehideki
0
250
事業会社における推薦システム開発事例 / recsys-in-wantedly-2022
yuya4
1
1.2k
深層学習による自然言語処理 輪読会#2 資料
tok41
0
380
Cross-Media Information Spaces and Architectures (CISA)
signer
PRO
2
13k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
21
5.4k
What's new in Ruby 2.0
geeforr
336
30k
The Invisible Side of Design
smashingmag
290
48k
Embracing the Ebb and Flow
colly
73
3.4k
KATA
mclloyd
7
8.7k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Designing on Purpose - Digital PM Summit 2013
jponch
106
5.6k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
29
4.3k
We Have a Design System, Now What?
morganepeng
35
3k
BBQ
matthewcrist
74
7.9k
Support Driven Design
roundedbygravity
86
8.5k
Transcript
コレスポンデンス分析の 正しい使い方 Tokyo.R #97 2022/03/19 @bob3bob3
今回の発表は以下のブログ記事をもとにしています。 • なので、詳しくはこれらの記事を参照してください。 ◦ コレスポンデンス分析の同時布置図は本当に使えないのか? ◦ コレスポンデンス分析の同時布置図は本当に使えないのか?(の続き ) ◦ コレスポンデンス分析の同時布置図は本当に使えないのか?(点と点の距離の話)
◦ 複数回答(multiple answer, MA)の集計表をコレスポンデンス分析にかけて大丈夫?
コレスポンデンス分析とは? • クロス集計表における項目間の相対的な関係を、視覚的に分かりやすく把握する ための手法。 • 通称「コレポン」。 • 「対応分析」とも呼ばれる。 • ブランドのイメージを調査するアンケートの分析などによく使われる。
• 項目数が多く、数表では全体の把握が難しい場合に特に有効。 • RではMASS::corresp()、ca::ca()、FactoMineR::CA()などで実行可能。
こんなかんじ この図をコレスポンデンス分析の 同時布置図と呼 びます。行と列の情報を同時に置くという意味。 ノルウェイの犯罪統計( 1984) 『対応分析入門』より引用 強盗 詐欺 破壊
オスロ 395 2456 1758 中部地域 147 153 916 北部地域 694 327 1347
どう解釈する? • マクロミル社の解説 ◦ 「関連の強いカテゴリは近くに、弱いカテゴリ は遠くにプロットされるが、これはあくまでカテ ゴリ間の相対的な関係で、絶対的なボリュー ムを表わすものではない。」 • クロスマーケティング社の解説
◦ 「各項目の近くに位置するもの同士に類似性 があるという読み取りができます。」 • なるほど、なるほど……
コレポンをめぐる議論 • マーケティングリサーチで使われるコレスポ ンデンス分析について調べてみた ◦ 「コレスポンデンス分析は、それぞれ行得点・ 列得点を算出しているだけで、それらを重ね 合わせたに過ぎません。 つまり列要素と行要 素との距離は、数理的に定義されず「近い」
「似ている」のように解釈できないのです。」 ◦ 「コレスポンデンス分析は行・列をごっちゃにし て分析しない。」
コレポンをめぐる議論
どうすりゃいいの??? • 結論から言うと、正しく使えば大丈夫。 • コレポンの正しい使い方とは??? ◦ コレポンの同時布置図において集計表の行と列の関係は、 原点からの方向の近さ (角度の大きさ) で解釈するよ。
◦ コレポンの同時布置図が表現しようとしているのは割合の残差 であり、残差の大きさは原点から引 いた各点がなす角度の大きさ として表現されるよ。 ◦ 原点から各点へ矢印を引く と解釈しやすいよ。 ◦ 残差の大きさが角度の大きさとして表される描画方法を使わないとダメ だよ。 ◦ 縦横のスケールは合わせないとダメ だよ。 ◦ コレポンは実数の大きさには関心がないよ。実数の大きさはモザイクプロットなどで確認してね。 ◦ 縦横の軸の意味を解釈しようとするのはダメだよ。 ◦ 点と点の距離で関係の強さを解釈しようとするのはダメだよ。
サンプルデータ • Correspondence Analysis: What is it, and how can
I use it to measure my Brand? よ り引用。 Tasty Aesthetic Economic Butterbeer 5 7 2 Squishee 18 46 20 Slurm 19 29 39 Fizzy Lifting Drink 12 40 49 Brawndo 3 7 16 dat <- c(5, 18, 19, 12, 3, 7, 46, 29, 40, 7, 2, 20, 39, 49, 16) |> matrix( nrow = 5, dimnames = list( Brands = c("Butterbeer", "Squishee", "Slurm", "Fizzy Lifting Drink", "Brawndo"), Attributes = c("Tasty", "Aesthetic", "Economic")))
とりあえずコレポン library(ca) res.ca_ca <- ca(dat) res.biplot_symbiplot <- plot(res.ca_ca, map =
"symbiplot", arrows = c(TRUE, TRUE), xlim = c(-1.1, 0.9), ylim = c(-1.1, 0.9), main = "ca - Biplot - symbiplot") res.biplot_symbiplot ## $rows ## Dim1 Dim2 ## Butterbeer -1.0665778 -0.67407378 ## Squishee -0.6468361 0.23054640 ## Slurm 0.1563567 -0.42910993 ## Fizzy Lifting Drink 0.3359331 0.28929206 ## Brawndo 0.8359247 -0.06979996 ## ## $cols ## Dim1 Dim2 ## Tasty -0.4937814 -0.63528783 ## Aesthetic -0.3915076 0.30897357 ## Economic 0.6242065 -0.02893797
残差 • コレポンで知りたいのはクロス集計表の項目 間の関係。 • 表頭と表側の項目間の関係は 残差として現 れる。 • 残差とは実測値と期待値の差
。 • 期待値とは行と列の各項目間に関係がない と仮定した場合の各セルの値。 行周辺確率 分布と行周辺確率分布をかけ合わせた値。 • 残差の絶対値が大きいと、行と列の項目間 に何らかの関係がありそう、ということになり ます。 • ここではそれらを割合をベースに計算しま す。 n <- sum(dat) # 総度数 P <- dat / n # 同時確率分布 row_masses_pi <- rowSums(P) # 行周辺確率分布 col_masses_pj <- colSums(P) # 行周辺確率分布 E <- row_masses_pi %o% col_masses_pj # 期待割合E(Expected proportions) R <- P - E # 残差R(Residuals) R ## Attributes ## Brands Tasty Aesthetic Economic ## Butterbeer 0.007827909 0.003883136 -0.01171105 ## Squishee 0.008505917 0.036119329 -0.04462525 ## Slurm 0.009954389 -0.022343442 0.01238905 ## Fizzy Lifting Drink -0.020679241 -0.005639793 0.02631903 ## Brawndo -0.005608974 -0.012019231 0.01762821
指標化残差 • 生の残差は各カテゴリの度数に左右される ため、期待値で割って正規化します。 • これを指標化残差(Indexed residuals)と呼 びます。 • 指標化残差が0.955であれば、観測値は期
待値より95.5pt高いということを意味します 。 • この指標化残差を可視化するのがコレポン の同時布置図のねらい です。 I <- R / E # 指標化残差 I(Indexed residuals) I ## Attributes ## Brands Tasty Aesthetic Economic ## Butterbeer 0.9548872 0.20930233 -0.6462585 ## Squishee 0.1729323 0.32447398 -0.4104308 ## Slurm 0.1954023 -0.19379845 0.1100164 ## Fizzy Lifting Drink -0.3496613 -0.04213677 0.2013201 ## Brawndo -0.3684211 -0.34883721 0.5238095
コレポンにおける指標化残差の表現 • コレポンの同時布置図において、行の点Aの座標を (x1, y1)、列の点Bの座標を(x2, y2)とすると、x1 * x2 + y1
* y2が指標化残差と一致します。 ◦ これは二つのベクトルの内積(スカラー積)を意味し ます。 • 例えばtastyとButterbeerの指標化残差は0.955。 • 先に描いたコレポンの同時布置図でのそれぞれの座 標は、tastyが(-0.494, -0.635)、Butterbeerが (-1.067, -0.674)。 • 上記の計算をすると0.955で指標化残差と一致しま す。 • つまり、コレポンの同時布置図上でtastyとButterbeer の内積が指標化残差を表現できていることが分かり ます。 • 内積によって、2つのベクトルがなす角度も定まるの で、 同時布置図上でtastyとButterbeerのベクトル がなす角度(原点からの方向)が標準化残差を表し ている。といえます。 res.biplot_symbiplot$rows[1, 1] * res.biplot_symbiplot$cols[1, 1] + res.biplot_symbiplot$rows[1, 2] * res.biplot_symbiplot$cols[1, 2] ## [1] 0.9548872
指標化残差を同時布置図で正しく表す条件 • 同時布置図を描くには ca::plot.ca() や factoextra::fviz_ca() を使います が、デフォルトでは指標化残差を角度 で正しく表現することができません。 •
mapオプションで"colprincipal" か"rowprincipal"か"symbiplot"を 指定する必要があります。 ◦ "symbiplot"がおすすめ。 • なおかつ原点からの矢印を引きけば 視覚的に正しく解釈しやすくなります。
まとめ • コレスポンデンス分析は正しく使えばクロス集計表の探索的分析に有効なので、恐 れず正しく使いましょう。 ◦ 正しくないコレスポンデンス分析が蔓延しているのも事実なので、解釈に気を付けましょう。 ◦ 原点から各点へ矢印を引いて、方向(角度)の近さで解釈すれば大きく間違えることはないと思いま す。 ◦
また、別途モザイクプロットなどを併用して値の大きさも確認しましょう。