コレスポンデンス分析で自社のポジションを可視化する : Python mca

商品やサービス、ブランドのマーケティング担当になったら
  • 市場を意味のある塊に区分けして (セグメンテーション)
  • どこにアプローチするか決めて (ターゲティング)
  • どのようなコミュニケーションをするか決める (ポジショニング)
というのが一般的な流れですよね。

Segmentation, Targeting, Positioning (STP) というやつです。

昨今ではまさにデータサイエンスを用いて変わりゆく市場の変化に対応しながらアクションを取る流れになっていると思いますが戦略、戦術を考えるときはやはりSTPの考え方は役に立つかと思います。

この記事ではSTPの最後にあるポジショニングについてPythonのmcaというPackegeを使って客観的に計算することにトライしたいと思います。コレスポンデンス分析というやつですね。
    目次
  • 1: ポジションの可視化
    • 1.1: データの準備
    • 1.2: 計算
    • 1.3: 可視化
  • 2: 都合のいい軸をつくってはいけない

ポジションの可視化

まずはやってみましょう。環境はGoogle Colaboratoryを使わせて頂きました。
今回は競合企業と自社に関してターゲットにどのような評価をされているのかをこんな感じにマッピングしてみます。


データの準備

例えば、イヤホンメーカーのマーケティング担当だとしてSNSや他アンケートからお客様の関心事を解明できたとしましょう。
次に競合含めてお客様に各項目を評価してもらい次のようなクロス集計表を作ります。


ここからmcaというPackageをつかっていきます。
使い方に関する記事はこちらです。
ではmcaを入れるところからやっていきましょう。
# mcaをインストール
!pip install mca
pandasとmatplotlibも入れておきましょう。
# mca, matplotlib, pandasのインポート
import mca
import pandas as pd
import matplotlib.pyplot as plt
csvファイルをGoogle Colaboratoryに入れておいて読み込みましょう。
# クロス集計データ取得
data = pd.read_table('/content/data.csv', sep=',', index_col=0, header=0)

# 確認
data

計算

mcaにデータを与えると計算してくれます。
# 計算
mca_counts = mca.MCA(data)

# 結果データ抜き出し
# 2次元表示のためN=2まで
rows = mca_counts.fs_r(N=2) # 表側データ
cols = mca_counts.fs_c(N=2) # 表頭データ
可視化ということで、N=2とし2次元のマップにました。

可視化

# 図示
# 表側
plt.scatter(rows[:,0], rows[:,1], c='b',marker="None")
labels = data.index
for label,x,y in zip(labels,rows[:,0],rows[:,1]):
   plt.annotate(label,xy = (x, y), c="b")

# 表頭
plt.scatter(cols[:,0], cols[:,1], c='r',marker="None")
labels = data.columns
for label,x,y in zip(labels,cols[:,0],cols[:,1]):
   plt.annotate(label,xy = (x, y), c="r")

# xy軸
plt.axhline(0, color='gray')
plt.axvline(0, color='gray')


出来ました!

青字がメーカーで赤字が評価になります。
評価を見てみると横軸が左向きに高級質感、右向きに大衆向けというところでしょうか。
縦軸はデザイン性とかですかね。軸の解釈をするとミスリードになることがあるので便利ですが注意が必要です。

もう一つコレスポンデンス分析の可視化で注意点は
図上の赤字と青字の距離を近い遠いと解釈してはいけないということです。

そもそも多次元あったのでまぁそうなりますよね。

都合のいい軸をつくってはいけない

よくあるコレスポンデンス分析の失敗は、作成者の都合の良い軸で考えてしまうことです。

そのためポジショニングを作るときはアンケート調査やSNS, Webによってターゲットの声をきちんと分析してどのような項目があるべきなのかをきちんと把握することが重要だと思います。

この集計作業や情報収集もPythonを使ってできるようなのでまた挑戦しましょう。