Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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.9k
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
1.1k
RでPSM分析
bob3bob3
1
560
『改訂新版前処理大全』の話と Apache Parquet の話 #TokyoR
bob3bob3
0
1.5k
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
670
『データ可視化学入門』をPythonからRに翻訳した話(増強版)
bob3bob3
0
630
『データ可視化学入門』を PythonからRに翻訳した話
bob3bob3
1
690
qeMLパッケージの紹介
bob3bob3
0
3k
「国と音楽」 ~spotifyrを用いて~ #muana
bob3bob3
2
700
パーマーステーションのペンギンたち#3 探索的データ分析(EDA)編
bob3bob3
1
910
Other Decks in Business
See All in Business
シナジーマーケティング株式会社 採用ピッチ資料
synergymarketing
1
68k
株式会社ナーシング_採用資料
hr1nursing
0
140
プロダクトオーナーを「忙しい」から解き放つ!委任を促す言葉
kawanotron
0
280
Clarity for Product People
arnekittler
1
890
YassLab (株) サービス紹介 / Introduction of YassLab
yasslab
PRO
3
45k
株式会社KINS 採用ピッチ資料 2026
kinsofficial
1
270
カンパニーデック_260910.pdf
kojima1
0
570
FY2026.6 Impact Report EN
mercari_inc
0
12k
スピーチ公開:続けることが、いちばんの機会になる(プログリット感謝祭2026)
forest8810
1
550
KEELLプロダクト紹介資料_202610
shunsuke_takeuchi
PRO
0
180
新卒採用向け説明資料
kazumakitao
PRO
1
4.1k
EDRを入れたので 安心しきっていませんか? 「導入した」から、「使いこなす」へ。
kamadamakoto
0
130
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
360
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Deep Space Network (abreviated)
tonyrice
0
370
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
360
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
We Have a Design System, Now What?
morganepeng
55
8.4k
エンジニアに許された特別な時間の終わり
watany
109
250k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Building the Perfect Custom Keyboard
takai
2
910
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!