Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rでコンジョイント分析 2024年版
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
bob3bob3
July 13, 2024
Business
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rでコンジョイント分析 2024年版
Rでコンジョイント分析 2024年版
bob3bob3
July 13, 2024
More Decks by bob3bob3
See All by bob3bob3
RとLLMで自然言語処理
bob3bob3
3
910
RでPSM分析
bob3bob3
1
450
『改訂新版前処理大全』の話と Apache Parquet の話 #TokyoR
bob3bob3
0
1.5k
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
650
『データ可視化学入門』をPythonからRに翻訳した話(増強版)
bob3bob3
0
590
『データ可視化学入門』を PythonからRに翻訳した話
bob3bob3
1
670
qeMLパッケージの紹介
bob3bob3
0
2.7k
「国と音楽」 ~spotifyrを用いて~ #muana
bob3bob3
2
660
パーマーステーションのペンギンたち#3 探索的データ分析(EDA)編
bob3bob3
1
860
Other Decks in Business
See All in Business
アッテル会社紹介資料/culture deck
attelu
11
17k
_2026_2027年3月新卒_理学療法士新卒採用ピッチ資料.pdf
nozomiseikeigeka
0
130
BacklogとAIで変わった、 ウェブディレクターの仕事のリアル
wattlaa
0
290
【会社について知る】エーテンラボ採用デック
a10lab201612
0
340
プリザンターの紹介 - OpenSourceConference 2026 SENDAI
s_pochi
0
180
タケウチグループRecruit
takeuchigroup
0
12k
Copilotで資料を作るようになって仕事のやり方が変わった話
aonomasahiro
1
350
【簡易版】パーソルクロステクノロジー_システムインテグレーション領域のご紹介 / Introduction_of_persol-xtech_gs_es_dx_short
pxt_gs_ssol
0
170k
SimpleForm 会社紹介資料
simpleform
2
55k
mar studio_紹介資料
vinculum
6
110
パーソルクロステクノロジー_グループソリューション本部のご紹介 / Introduction_of_gs
pxt_gs_ssol
0
3.5k
okr and devops -- Why OKRs Fail and DevOps as the Practice to Make Them Work
ikuodanaka
0
160
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
Everyday Curiosity
cassininazir
0
230
Making the Leap to Tech Lead
cromwellryan
135
9.9k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
750
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Transcript
Rでコンジョイント分析 (2024年版) Tokyo.R #114 2024/07/13 @bob3bob3
余談:モザイクプロット
モザイクプロットはクロス集計の可視化手法 投票率が考慮されて いないので、これは これで改善の余地が ありますが。
mosaicplot() penguins |> mosaicplot( ~ species + island, data =
_, color = TRUE, main = "mosaicplot()" )
ggmosaic::geom_mosaic() library(ggplot2) library(ggmosaic) penguins |> ggplot() + geom_mosaic( aes( x
= product(species, island), fill = species ) ) + labs( x="island", y="species", title = "ggmosaic::geom_mosaic()" ) + coord_equal() + coord_flip()
本題
Tokyo.R #30 (2013年4月) https://speakerdeck.com/bob3bob3/tokyor-number-30-konziyointofen-xi Togetterも残ってます。https://togetter.com/li/491135
コンジョイント分析とは? • マーケティングリサーチで使われる手法の一つ。 • 消費者が商品やサービスのどんな要素を重視しているのかを探るための方法。 • 商品やサービスを要素に分解し、それを様々に組み合わせたものを消費者に評価 させ、どんな組み合わせにするとどんな評価が得られるのかを推定する。 • A/Bテストの派生である多変量テストと基本的な考え方は同じ。
なぜコンジョイント分析を使うのか? • 消費者自身は、自分がどんな要素がどれくらい重視しているのかに自覚的ではな いことが多い。 • だから、個別の要素についての直接的に重要度を尋ねることはあまり有効とは言 えない。 • また個々の要素同士がトレードオフの関係にあることもしばしば。 •
だから、組み合わせを全体として評価を測定し、分析をする。
商品やサービスを要素に分解とは? • 本格デジカメの構成要素、8属性、各2水準。 ◦ レンズ 〔交換式/固定〕 ◦ ミラーの有無〔一眼レフ/ミラーレス〕 ◦ 本体の色
〔黒/黄色〕 ◦ センサーサイズ 〔フルサイズ/APS-C〕 ◦ HDR機能 〔有り/無し〕 ◦ 電子水準器 〔有り/無し〕 ◦ 動画撮影 〔有り/無し〕 ◦ WiFi 〔有/無〕 • 弁当[主食/主菜の量/主菜/副菜/価格] • パソコン[OS/CPU/メモリ/ストレージ/メーカー/価格] • 賃貸住宅[駐車場/駅距離/収納/風呂/セキュリティ/間取り/家賃]
要素の組み合わせを考えると? • 要素の組み合わせをコンジョイント分析ではプロファイルと呼びます。 • 8属性、各2水準の全プロファイルは、2^8 = 256組。 • 全組み合わせについて評価してもらえば、最も購買意欲を高める組み合わせは自 ずとわかるが、現実的ではない。
そこで直交計画 • 実験計画法の世界で生まれた実験の回 数を少なくするテクニック。 ◦ 直交表と呼ばれる「どの属性でも全ての要 素が同じ数だけ出現する、すべて異なる組 み合わせの表」を使う。 ◦ 直交表は各列間の相関係数がゼロにな
る。 ◦ L8直交表なら全組み合わせで128通りの実 験が必要なところが8通りの実験で済む (交互作用を考えない場合)。 ◦ それでも実験数が減らせない場合、直交性 を妥協して実験数を減らす場合もある。 • 面倒臭いからここはRに任せたい。 詳しくは第22回Tokyo.Rでの @itoyan さん の発表 資料を参照してください。 「Rで実験計画法(後編)」 http://www.slideshare.net/itoyan110/r14261638
アンケートでの質問形式 • 評定型 ◦ 順位付け「1位からn位まで順位を付けてください」 ◦ 評点評価「10点満点で点数を付けてください」 ◦ 分析には回帰分析を使う。 •
選択型 ◦ 「(2つのプロファイルを呈示して) 1つ選んでください」 ◦ 分析には条件付きロジット分析(多項ロジット)を使う。
結果の解釈と使い方 • 効用値は各水準が、重要度は各属性が全体評価に対してどの程度影響するかを 示す。 ◦ これにより、どんな組み合わせがどんな評価を得るか推定することができる。 ◦ また、回答者の属性(性別、年齢など)別に分析することで、ターゲットごとにどんな商品が高い評 価を得そうかを推定できる。
◦ さらに、個人別に分析を行い、その結果に基づいてクラスタリングを行い、重視する属性の違いに 基づくセグメンテーションなども可能(ベネフィットセグメンテーション)。
Rでコンジョイント分析 評定型はconjointパッケージ、選択型はcbcToolsパッケージを使うのが便利。
conjointパッケージで評定型コンジョイント分析
conjointパッケージで評定型コンジョイント分析 library(conjoint) # 属性と水準の指定 full_set <- expand.grid( レンズ = c("交換式",
"固定"), ミラー = c("一眼レフ", "ミラーレス"), 本体の色 = c("黒", "黄色"), センサーサイズ = c("APS-C", "マイクロフォーサーズ "), HDR機能 = c("無し", "有り"), 電子水準器 = c("無し", "有り"), 動画撮影 = c("無し", "有り"), WiFi = c("無し", "有り") ) # 直交計画によるプロファイル生成 design <- caFactorialDesign(full_set, type="orthogonal")
conjointパッケージで評定型コンジョイント分析 • conjoinパッケージに入っているお茶の調査データを分析 ◦ 属性と水準と組み合わせ ▪ price:3水準(low, medium, high) ▪
variety:3水準(black, green, red) ▪ kind:3水準(bags, granulated, leafy) ▪ aroma:2水準(yes, no) ◦ 100名に13通りの組み合わせを 10点満点で評価させたデータ。
conjointパッケージで評定型コンジョイント分析 # Conjoint(評価のマトリクス , コード化されたプロファイル , 各水準のラベル ) Conjoint(tprefm, tprof,
tlevn) # [1] "Part worths (utilities) of levels (model parameters for whole sample):" # levnms utls # 1 intercept 3,5534 # 2 low 0,2402 # 3 medium -0,1431 # 4 high -0,0971 # 5 black 0,6149 # 6 green 0,0349 # 7 red -0,6498 # 8 bags 0,1369 # 9 granulated -0,8898 # 10 leafy 0,7529 # 11 yes 0,4108 # 12 no -0,4108 # [1] "Average importance of factors (attributes):" # [1] 24,76 32,22 27,15 15,88 # [1] Sum of average importance: 100,01 # [1] "Chart of average factors importance" 効用値 重要度
cbcToolsパッケージで選択型コンジョイント分析
cbcToolsパッケージで選択型コンジョイント分析
cbcToolsパッケージで選択型コンジョイント分析 # remotes::install_github("jhelvy/cbcTools") library(cbcTools) #選択型コンジョイント分析 # 属性と水準の指定 profiles <- cbc_profiles(
レンズ = c("交換式", "固定"), ミラー = c("一眼レフ", "ミラーレス"), 本体の色 = c("黒", "黄色"), センサーサイズ = c("APS-C", "マイクロフォーサーズ "), HDR機能 = c("無し", "有り"), 電子水準器 = c("無し", "有り"), 動画撮影 = c("無し", "有り"), WiFi = c("無し", "有り") ) #プロファイルの生成 set.seed(123) design <- cbc_design( profiles = profiles, # 調査対象者数 n_resp = 100, # 1問あたりの選択肢数。「どれも選ばない」は除く n_alts = 2, # 調査対象者あたり質問数 n_q = 6, # 「どれも選ばない」を含める no_choice = FALSE, # 実験計画の生成方法 method = "orthogonal" )
cbcToolsパッケージで選択型コンジョイント分析
cbcToolsパッケージで選択型コンジョイント分析 回答者 質問番号 選択肢番号 観測番号
cbcToolsパッケージで選択型コンジョイント分析 1人分
cbcToolsパッケージで選択型コンジョイント分析 1問分
cbcToolsパッケージで選択型コンジョイント分析 # ダミーデータ生成 data <- cbc_choices(design = design, obsID =
"obsID") 回答結果
cbcToolsパッケージで選択型コンジョイント分析 # 効用値の推定 power <- cbc_power( data = data, pars
= c( "レンズ", "ミラー", "本体の色", "センサーサイズ", "HDR機能", "電子水準器", "動画撮影", "WiFi" ), outcome = "choice", #回答カラム名 obsID = "obsID", #通し質問ID名 nbreaks = 1, #全体なら1 n_q = 6 #調査対象者1名あたりの質問数 ) # ダミー変数化でdropされた水準の効用値を計算 res <- power |> bind_rows( data.frame( samplesize = rep(100, 8), coef = str_replace_all( power$coef, pattern="1", replacement="2"), est = 0 - power$est, se = power$se ) ) |> mutate( pars = str_remove_all(coef, pattern="1|2") )
cbcToolsパッケージで選択型コンジョイント分析 # 効用値の可視化 library(tidyverse) res |> ggplot(aes( x = est,
y = coef, group = pars, fill = pars )) + geom_col() + labs( x = "効用値", y = "水準", fill = "属性" )
Enjoy!