見出し画像

RでPSM分析

技術系の記事をnoteで書くとどうなるかの実験もかねて、RでPSM分析(Price Sensitivity Meter、価格感度分析)をやってみようと思います。

実はずいぶん前にもRでPSM分析という記事を書いたのですが、最近は専用のパッケージもあるようなので、そちらを使ってみようと思います。

昔書いた記事はこちら。tidyverse誕生以前ですねぇ。

こちらがPSM分析の専用パッケージ。

PSMとは何ぞや?という話ですが、アンケート調査の回答から消費者の内的参照価格を探る消費者調査とその分析手法のことです。
内的参照価格とは、消費者がある商品の価格について「高い」「安い」「妥当」と判断する基準となる価格帯のことです。

アンケート調査で特定の商品について以下の4つの質問をします。微妙に表現が変わる場合がありますが、「高すぎる」「高いけど買える」「安くて買いたい」「安すぎて怪しい」と思う価格を尋ねる質問です。

  1. いくらぐらいから「高い」と思いますか。

  2. いくらぐらいから「安い」と思いますか。

  3. いくらぐらいから「高すぎて買えない」と思いますか。

  4. いくらぐらいから「安すぎて品質が疑わしい」と思いますか。

英語版のWikipediaに詳しい説明があります。

日本語ではマクロミル社やクロスマーケティング社の説明を参照してください。

pricesensitivitymeterパッケージ

cranに入っているのでinstall.packages()でインストールします。

install.packages("pricesensitivitymeter")

いつものパッケージと一緒に呼び出しておきましょう

library(conflicted)
library(tidyverse)
library(pricesensitivitymeter)

デモデータを作りましょう。4つの質問に対応するデータです。

# 再現性のための乱数種固定
set.seed(1234)

# デモ用回答データの生成
data_psm_demo <- data.frame(
  tch = round(rnorm(n = 250, mean = 8.5, sd = 1), digits = 2),   # Too cheap
  ch  = round(rnorm(n = 250, mean = 10, sd = 1), digits = 2),    # Cheap/Good Value
  ex  = round(rnorm(n = 250, mean = 12, sd = 0.75), digits = 2), # Expensive/High Side
  tex = round(rnorm(n = 250, mean = 13, sd = 1), digits = 2)     # Too expensive
  )

一応、デモデータの分布を確認しておきましょうか。

data_psm_demo |>
  pivot_longer(cols = everything(), values_to = "price") |>
  ggplot(aes(x = price, color = name)) +
  geom_density() +
  labs(title = "回答データの分布", color = "価格タイプ")
回答データの分布

ではこのデータを分析してみましょう。分析は psm_analysis()関数で行います。 

output_psm_demo1 <- data_psm_demo |>
  psm_analysis(
    data = _,
    toocheap = "tch",
    cheap = "ch",
    expensive = "ex",
    tooexpensive = "tex"
    )

まずは結果をプロットします。

PSM分析のプロット

結果はsummary()関数で表示されます。

output_psm_demo1 |>
  summary()
Van Westendorp Price Sensitivity Meter Analysis

Accepted Price Range: 9.16 - 12.46 
Indifference Price Point: 11.14 
Optimal Price Point: 10.21 

---
162 cases with individual price preferences were analyzed (unweighted data).
Total data set consists of 250 cases. Analysis was limited to cases with transitive price preferences.
(Removed: n = 88 / 35% of data)

Indifference Price Point (IDP、妥協価格)、Optimal Price Point (OPP、最適価格)とAccepted Price Range (需要価格帯)が算出されます。

なお、これらは van Westendorp の原論文に基づく計算方法です。よく使われる「高い」「安い」の回答をそのまま累積する方法とは結果が異なるので注意してください。

また、pricesensitivitymeterパッケージは、質問を2つ追加したNewton / Miller / Smith (NMS)による拡張にも対応していますので興味のある方はぜひ。

以上です。

この記事が気に入ったらサポートをしてみませんか?