Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tokyo.R コレスポンデンス分析の正しい使い方

bob3bob3
March 19, 2022

Tokyo.R コレスポンデンス分析の正しい使い方

マーケティングリサーチ(市場調査)の領域でよく使われるコレスポンデンス分析の正しい使い方の解説です。
クロス集計表の探索的分析に使います。
R言語による分析事例です。
Tokyo.Rでの発表資料です。

bob3bob3

March 19, 2022
Tweet

More Decks by bob3bob3

Other Decks in Science

Transcript

  1. どうすりゃいいの??? • 結論から言うと、正しく使えば大丈夫。 • コレポンの正しい使い方とは??? ◦ コレポンの同時布置図において集計表の行と列の関係は、 原点からの方向の近さ (角度の大きさ) で解釈するよ。

    ◦ コレポンの同時布置図が表現しようとしているのは割合の残差 であり、残差の大きさは原点から引 いた各点がなす角度の大きさ として表現されるよ。 ◦ 原点から各点へ矢印を引く と解釈しやすいよ。 ◦ 残差の大きさが角度の大きさとして表される描画方法を使わないとダメ だよ。 ◦ 縦横のスケールは合わせないとダメ だよ。 ◦ コレポンは実数の大きさには関心がないよ。実数の大きさはモザイクプロットなどで確認してね。 ◦ 縦横の軸の意味を解釈しようとするのはダメだよ。 ◦ 点と点の距離で関係の強さを解釈しようとするのはダメだよ。
  2. サンプルデータ • 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")))
  3. とりあえずコレポン 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
  4. 残差 • コレポンで知りたいのはクロス集計表の項目 間の関係。 • 表頭と表側の項目間の関係は 残差として現 れる。 • 残差とは実測値と期待値の差

    。 • 期待値とは行と列の各項目間に関係がない と仮定した場合の各セルの値。 行周辺確率 分布と行周辺確率分布をかけ合わせた値。 • 残差の絶対値が大きいと、行と列の項目間 に何らかの関係がありそう、ということになり ます。 • ここではそれらを割合をベースに計算しま す。 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
  5. 指標化残差 • 生の残差は各カテゴリの度数に左右される ため、期待値で割って正規化します。 • これを指標化残差(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
  6. コレポンにおける指標化残差の表現 • コレポンの同時布置図において、行の点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
  7. 指標化残差を同時布置図で正しく表す条件 • 同時布置図を描くには ca::plot.ca() や factoextra::fviz_ca() を使います が、デフォルトでは指標化残差を角度 で正しく表現することができません。 •

    mapオプションで"colprincipal" か"rowprincipal"か"symbiplot"を 指定する必要があります。 ◦ "symbiplot"がおすすめ。 • なおかつ原点からの矢印を引きけば 視覚的に正しく解釈しやすくなります。