Claudeで価格感度分析(PSM)のアンケートを集計し受容価格帯を出す
「安すぎる・安い・高い・高すぎる」の4問CSVから、累積比率の交点で受容価格帯を出す手順。回答の整合性チェックとサンプル数による交点のぶれ、Claudeに頼む範囲と人が決める範囲まで扱います。
自社の新しい価格をアンケートで決めるとき、よく使われるのが価格感度測定(PSM、Price Sensitivity Meter)です。「安すぎる」「安い」「高い」「高すぎる」と感じる価格を1人ずつ聞き、4本の累積比率の曲線がどこで交わるかを見て、受け入れられやすい価格の幅を探します。
この集計は、CSVをClaudeに渡して計算させる作業と相性がよいものです。ただし、交点を出すだけなら数十行のスクリプトで済みます。実務で差がつくのは、変な回答を除く検証と、回答数が少ないときに交点がどれだけぶれるかを知っておくことです。ここでは、CSVの形、Claudeへの頼み方、手元で再現できるスクリプト、検証の観点を順に扱います。
競合の価格を調べる段階はClaude Researchで競合の料金を比較する手順に、価格を決めた後に離脱率を見込んで粗利を試算する段階は値上げシミュレーションをClaude for Excelに組ませる手順にあります。この記事はその前、価格帯を絞る段階です。
PSMの4問と4つの交点
PSMは1976年にオランダの経済学者ピーター・ファン・ウェステンドルプ(Peter van Westendorp)が提示した手法です。回答者は価格を思い描ける、という前提に立っています。標準的な質問は次の4つです。
| 質問 | CSVの列名の例 | 累積の向き |
|---|---|---|
| 高すぎて買う対象から外れる価格 | CSVの列名の例too_expensive | 累積の向き価格が上がるほど増える |
| 高くなり始め、買うのに考え込む価格 | CSVの列名の例expensive | 累積の向き価格が上がるほど増える |
| 得だと感じる価格 | CSVの列名の例cheap | 累積の向き反転(価格が上がるほど減る) |
| 安すぎて品質が不安になる価格 | CSVの列名の例too_cheap | 累積の向き反転(価格が上がるほど減る) |
質問の表現は調査ごとに変わってよく、手法の資料でも「標準の形はあるが文言は一定でない」と書かれています。自社の商品に合わせて言い換えて構いませんが、CSVの列がどの質問に対応するかは、集計前に固定しておきます。
4本の曲線を重ねると、交点が4つできます。
| 名称 | 交わる2本 | 読み方 |
|---|---|---|
| PMC(下限) | 交わる2本安すぎる × 高い | 読み方受容価格帯の下端 |
| OPP(最適価格) | 交わる2本安すぎる × 高すぎる | 読み方両端の拒否が釣り合う価格 |
| IPP(無差別価格) | 交わる2本安い × 高い | 読み方「安い」と「高い」が同数になる価格 |
| PME(上限) | 交わる2本安い × 高すぎる | 読み方受容価格帯の上端 |
「受容価格帯」はPMCからPMEまでの幅を指して使うのが一般的です。ただし、PMCとPMEの定義には資料ごとの揺れがあり、IPPのほうが合意されやすいとされています。レポートには、どの2本の交点を何と呼んだかを添えておくと、読み手が迷いません。
回答CSVはこの形にそろえる
Claudeに渡す前に、1行1回答者、4列の数値(税込・税抜は全員同じ)にそろえます。
respondent_id,too_cheap,cheap,expensive,too_expensive
r001,600,900,1500,2000
r002,500,800,1300,1800
r003,700,1000,1600,2400自由記述の列や氏名・メールアドレスは、集計に要らないので渡す前に外します。ファイルを読ませる側にも理由があります。Claudeのファイル作成と分析の機能では、外部のファイルに埋め込まれた指示で、Claudeが意図しない動作に誘導されることがあると説明されています。自由記述欄に何が書かれているかは回収してみるまで分かりません。数値4列だけの形にしておけば、その経路ごと避けられます。
アップロードの条件も確認しておきます。コード実行とファイル作成は、Free・Pro・Max・Team・Enterpriseのすべてで、Webとデスクトップ、モバイルから使えます。Team以上では組織のオーナーが無効にでき、ネットワークアクセスは初期状態でオフです。数百行のCSVはサイズの制限にかからず、制約になるのはこちらの設定です。CSVやTSVを渡してPythonで分析し、PNGのグラフにする使い方は、機能として挙げられています。
Claudeに頼む文面
最初から「受容価格帯を出して」と頼むより、検証と集計を分けて頼むほうが、途中の数字を確認できます。
添付のpsm_answers.csvは、価格感度測定(PSM)の回答です。
列は too_cheap(安すぎる)、cheap(安い)、expensive(高い)、
too_expensive(高すぎる)で、単位は税込の円です。
1. まず、too_cheap < cheap < expensive < too_expensive を
満たさない行の数と割合を教えてください。除外はまだしないでください。
2. 除外の候補行をCSVにして出してください。
3. 私の確認後に、残りの行で4本の累積比率を10円刻みで出し、
PMC・OPP・IPP・PMEを計算してください。
4. 計算に使ったPythonスクリプトも、そのまま出してください。4点目が肝心です。スクリプトが手元に残れば、同じ入力で誰でも同じ数字を再現できます。Claudeが書いた計算を信用するかどうかではなく、検算できる形で受け取るかどうかの違いです。Claudeの出力は、確認して必要なら修正するものと位置づけられています。
手元で再現できる集計スクリプト
次のスクリプトは、前節の手順1と3を実装したもので、手順2の除外候補の書き出しは省いています。pandasとnumpyを使います。
import pandas as pd
import numpy as np
df = pd.read_csv("psm_answers.csv")
# 1) 順序が崩れた回答を除く
ok = (df.too_cheap < df.cheap) & (df.cheap < df.expensive) \
& (df.expensive < df.too_expensive)
print(f"回答数 {len(df)} / 除外 {(~ok).sum()} ({(~ok).mean():.1%})")
df = df[ok]
# 2) 価格軸ごとの累積比率(安すぎる・安いは反転)
grid = np.arange(df.too_cheap.min(), df.too_expensive.max() + 1, 10)
n = len(df)
curve = pd.DataFrame({
"price": grid,
"too_cheap": [(df.too_cheap >= p).sum() / n for p in grid],
"cheap_inv": [(df.cheap >= p).sum() / n for p in grid],
"expensive": [(df.expensive <= p).sum() / n for p in grid],
"too_expensive": [(df.too_expensive <= p).sum() / n for p in grid],
})
# 3) 2本の曲線の交点(線形補間)
def cross(a, b):
d = (curve[a] - curve[b]).to_numpy()
for i in range(len(d) - 1):
if d[i] == 0:
return curve.price[i]
if d[i] * d[i + 1] < 0:
x0, x1 = curve.price[i], curve.price[i + 1]
return x0 + (x1 - x0) * d[i] / (d[i] - d[i + 1])
return None
pts = {
"PMC 下限": cross("too_cheap", "expensive"),
"OPP 最適価格": cross("too_cheap", "too_expensive"),
"IPP 無差別価格": cross("cheap_inv", "expensive"),
"PME 上限": cross("cheap_inv", "too_expensive"),
}
for k, v in pts.items():
print(k, None if v is None else round(v))手元で動かすと、結果はこうなりました。入力は、平均1,500円・標準偏差350円の乱数から4つの価格を作った200人分の架空データで、うち10人は「安い」と「高い」を入れ替えて壊してあります(Python 3.12.2、pandas 3.0.6、numpy 2.5.4で実行)。
回答数 200 / 除外 10 (5.0%)
PMC 下限 955
OPP 最適価格 1010
IPP 無差別価格 1322
PME 上限 1447この例なら、受容価格帯はおよそ955円から1,447円、両端の拒否が釣り合う最適価格は1,010円です。実在の調査結果ではなく、スクリプトの動作確認用の数字です。
外れ回答の扱い
PSMの検証で最初に見るのは、4つの価格の順序です。「安すぎる」が「高い」より大きい、のように論理が逆転している回答は、質問を読み違えたか、適当に埋めた可能性が高い行です。上のスクリプトはこの条件で除外しています。
見る観点は、ほかにも3つあります。
- 全員が同じ価格を入れた行。選択肢を機械的に選んだ疑いがあります
- 桁違いの値。円とドル、千円単位との混在が典型です
- 4つの価格の間隔が極端に狭い行。「安い」と「高い」が10円差、のような行です
どこまで除くかは、除外率とセットで報告します。上の例では5.0%でした。除外の割合が1割を超えるなら、アンケートの質問文や画面の設計に問題がなかったかを疑うほうが先です。除外の基準は調査ごとに決めるもので、一律の正解はありません。基準と除外率を結果に添えておけば、読み手は結論の信頼度を自分で判断できます。
落とし穴
Claudeに任せると除外が黙って行われることがある
「外れ値を除いて集計して」と一言で頼むと、何を外したかが説明されないまま数字だけが返ることがあります。除外の条件を自分で書いておき、件数と割合を先に出させ、除外候補の行を確認してから集計に進むと、結果を後から説明できます。
サンプル数が少ないと交点はどれだけぶれるか
累積比率の曲線は、回答数が少ないと階段状になり、交点の位置が回答者1人の入れ替わりで動きます。必要な回答数の目安は資料によって違うので、ここでは数字で示せる形に絞ります。
先ほどの架空データの除外後190件から、30件・100件・190件を重複ありで取り直し、300回繰り返して交点の90%区間(5〜95パーセンタイル)を調べました。
| 取り直した件数 | OPPの90%区間 | PMEの90%区間 | PMEの幅 |
|---|---|---|---|
| 30件 | OPPの90%区間820〜1,130円 | PMEの90%区間1,320〜1,640円 | PMEの幅320円 |
| 100件 | OPPの90%区間880〜1,130円 | PMEの90%区間1,370〜1,550円 | PMEの幅180円 |
| 190件 | OPPの90%区間930〜1,080円 | PMEの90%区間1,380〜1,510円 | PMEの幅130円 |
件数が増えるほど区間は狭くなります。30件では上限の候補が300円以上動きます。例えば月額1,500円前後の商品なら、上限が1,320円なのか1,640円なのかで、価格設計はまるで別の話になります。
セグメント別に分けるときは、分けた後の件数で同じ確認が要ります。法人と個人、既存顧客と見込み客に分けると、各グループは全体より小さくなります。全体で190件あっても、4グループに割れば1グループは50件前後です。グループごとの交点を比べるときは、取り直しで区間を出し、区間が重なっているなら、「差がある」とは言い切れません。
交点から価格を決めるまでに人が見ること
出てきた数字は「アンケートに答えた人の頭の中の許容幅」で、実際の購買行動ではありません。PSMの提唱者自身は需要の推定までは扱わず、価格の感度だけを見る手法でした。需要まで見たい場合は、購入意向を加えた拡張の手法があります。その一つは、「高い」と「安い」の価格のそれぞれで買う可能性を5段階などで聞き、収益の曲線を描く方法です。
数字の読み違いが起きやすい点を挙げます。
- 交点が出ない、または複数ある。曲線が接しているか、回答が二峰になっている状態です。セグメントを疑います
- 受容価格帯は広いが、OPPが下限に近い。安さで選ばれる商品だと答えている可能性があります
- 競合の価格より下限が低い。競合の料金表と並べて、課金の軸が同じかを見ます
- 回答者が既存顧客ばかり。新規に売る価格の根拠には弱くなります
最終的な価格は、原価、粗利、競合、ブランドの位置づけと合わせて決めます。Claudeに頼めるのは集計と、条件を変えた再計算までです。価格帯の中のどこに置くかは人が決めます。
ExcelでやるならClaude for Excelの出番と限界
アンケートの結果をExcelで持っている場合は、Claude for Excelで同じ計算を組むこともできます。Pro・Max・Team・Enterpriseで使え、ピボットテーブルの編集や並べ替え、フィルタといった操作を直接頼める機能です。累積比率の列を数式で組ませれば、除外条件を変えたときに交点の列が再計算されます。
使う前に押さえたい制限があります。
- データテーブル(What-If分析のそれ)とマクロ・VBAの操作には対応していません。感度を表で一括表示したいときに「データテーブル」を使う癖がある人は、通常の数式で組み直すことになります
- 顧客向けの最終成果物を人のレビューなしで出す使い方、監査に関わる計算を検証なしで任せる使い方は、推奨されていません
- 外部から入手したスプレッドシートには、隠れた指示が含まれる危険があります。信頼できるファイルだけで使い、広範囲の編集を頼む前に、コピーを用意するよう案内されています
回答CSVを外部の調査会社から受け取った場合は、この3つ目が直接当たります。いったん数値4列だけの新しいブックに貼り直してからClaude for Excelを使えば、元ファイルに仕込まれた内容を引き込まずに済みます。
Excelで組むか、チャットにCSVを渡してPythonで集計させるかは、結果をその後どう使うかで選べます。スクリプトで再現性を残したいならチャット、他部署がExcelのままレビューするならClaude for Excelです。CSVの一般的な集計とグラフ化はClaude CSV分析の使い方に、アンケートの回答を設問ごとに集計する流れは研修後アンケートをClaudeで集計・分析する手順にあります。
よくある質問
価格の質問は円で聞くのと選択肢で聞くのと、どちらがよいですか
自由入力の数値にすると、上のように10円刻みの格子で曲線を作れます。選択肢にした場合は、選択肢の間隔がそのまま交点の粗さになります。どちらも集計の流れは同じです。
交点が出なかった場合はどうしますか
スクリプトは交わらない組み合わせに対してNoneを返します。曲線をグラフにして、どの2本がなぜ交わらないかを目で確認してください。回答の外れ値や、セグメントの混在が原因のことが多くあります。