MVTを本当に理解する:Part2 MVTの分析方法


MVTの結果を分析する

前回、総当り方式MVT(多変量テスト:Multivariate Test)のテスト結果の解釈方法について書きました。しかし、前回のものは、あくまでも結果の解釈方法であって、結果の分析ではありません。MVTをさらに深く分析すると、もっと多くの情報を得ることができます。
前回同様、今回も3つの変動箇所(パラメータ)に対して、2つずつのパターンを準備したテストについて考えます。今回は結果がわかりやすいように、少し恣意的なデータを用意しました。
以下の表は各パターンの組み合わせとCVRをまとめたものです。
サンプル数は全て1,000とします。

パターン名 組み合わせ CVR
パターン1 a1b1c1 11.8%
パターン2 a1b1c2 6.0%
パターン3 a1b2c1 7.4%
パターン4 a1b2c2 3.0%
パターン5 a2b1c1 7.6%
パターン6 a2b1c2 2.9%
パターン7 a2b2c1 6.1%
パターン8 a2b2c2 0.9%

各パラメータを分解してみる

まず、それぞれのパターンでの区間推定をしてみます。

パターン名 下限 CVR 上限
パターン1 9.80% 11.80% 13.80%
パターン2 4.53% 6.00% 7.47%
パターン3 5.78% 7.40% 9.02%
パターン4 1.94% 3.00% 4.06%
パターン5 5.96% 7.60% 9.24%
パターン6 1.86% 2.90% 3.94%
パターン7 4.62% 6.10% 7.58%
パターン8 0.31% 0.90% 1.49%

パターン1のCVRが他よりも高く、有意な差がありあそうです。これで終わっても良いのですが、さらに分析を進めます。
まず、各パターンをパラメータごとに分解してみます。すると、各パラメータ内での平均値は下記表のようになります。

A B C
1 7.05% 7.08% 8.23%
2 4.38% 4.35% 3.20%

これも区間推定を出してみましょう。この場合、それぞれ4種類のパターンをまとめているので、サンプル数は4,000です。

下限 CVR(平均) 上限
a1 6.55% 7.05% 7.55%
a2 3.97% 4.38% 4.78%
b1 6.57% 7.08% 7.58%
b2 3.95% 4.35% 4.75%
c1 7.69% 8.23% 8.76%
c2 2.86% 3.20% 3.54%

A、B、Cいずれも「1」パターンの方が高く、有意な差がありそうです。この表からもパターン1「a1b1c1」が最も効果のある組み合わせだということが言えるでしょう。
詳しい人は既にわかっていると思いますが、MVTはいわゆる「実験計画法」と呼ばれる統計手法の一種と考えられます。実験計画法の手法を使って、さらに深い分析を行うことができます。

どのパラメータがCVに影響を及ぼしているのか

実は、このデータからコンバージョンに対して影響を与えているパラメータは何か特定させることができます。ここでは、「数量化I類」という手法を利用します。

*注:
通常の実験計画法では、ここから「分散分析」を行います。ただ、MVTの場合、結果を示すデータが「CVしたか」、「CVしないか」の「0/1」データ(離散型)となり、正規分布を前提とすることができません。ロジットモデルなどの複雑な分析が必要になってしまうので、ここでは簡易的な分析手法である数量化I類を採用することにします。

上のデータの組み合わせをアリ/ナシの「0」か「1」に置き換えると、以下の表を作成することができます。

a1 a2 b1 b2 c1 c2 cvr
パターン1 1 0 1 0 1 0 11.8%
パターン2 1 0 1 0 0 1 6.0%
パターン3 1 0 0 1 1 0 7.4%
パターン4 1 0 0 1 0 1 3.0%
パターン5 0 1 1 0 1 0 7.6%
パターン6 0 1 1 0 0 1 2.9%
パターン7 0 1 0 1 1 0 6.1%
パターン8 0 1 0 1 0 1 0.9%

ここで、よく考えてみます。
1.CVRはテストパターンによって大きく異なります。
2.各パラメータがコンバージョンに対する影響要因として考えることができそうです。
3.各パラメータの影響力に「誤差」を加えたもので、CVRを導くことができそうです。
4.つまり、各パラメータを「a,b,c」として、それぞれの影響度を「x1,x2,x3」、誤差をEとおくと、
CVR = x1*a+x2*b+x3*c+E
が成立します。
5.パターンが8個あるので、なんとか各影響度を算出することができそうです。

要は重回帰分析のモデルに当てはまることができるということです。
ただ、少しだけ注意が必要です。各パラメータは2つのパターンを持っていて、それぞれ完全に独立しています。例えば、a1パターンではないとき、必ずa2パターンとなります。上の表における、a1の列とa2の列は反対になっているだけで同義のものです。なので、重回帰分析を行うときには片方を除外しなくては計算ができません。1つのパラメータ内に3パターンある場合は1パターンが除外されます。
よって、上の表は以下のように表すことができます。

a1 b1 c1 cvr
パターン1 1 1 1 11.8%
パターン2 1 1 0 6.0%
パターン3 1 0 1 7.4%
パターン4 1 0 0 3.0%
パターン5 0 1 1 7.6%
パターン6 0 1 0 2.9%
パターン7 0 0 1 6.1%
パターン8 0 0 0 0.9%

これで普通に重回帰分析を行います(Rを使用)。

#利用するデータです。
> data
  a1 b1 c1   cvr
1  1  1  1 0.118
2  1  1  0 0.060
3  1  0  1 0.074
4  1  0  0 0.030
5  0  1  1 0.076
6  0  1  0 0.029
7  0  0  1 0.061
8  0  0  0 0.009

#線形回帰を行います。
> res <- lm(cvr~., data=data)
> summary(res)

Call:
lm(formula = cvr ~ ., data = data)

Residuals:
       1        2        3        4        5        6        7        8
 0.00875  0.00100 -0.00800 -0.00175 -0.00650 -0.00325  0.00575  0.00400

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.005000   0.005551   0.901 0.418649
a1          0.026750   0.005551   4.819 0.008529 **
b1          0.027250   0.005551   4.909 0.007992 **
c1          0.050250   0.005551   9.053 0.000825 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.00785 on 4 degrees of freedom
Multiple R-squared:  0.97,      Adjusted R-squared: 0.9475
F-statistic: 43.09 on 3 and 4 DF,  p-value: 0.001672

R^2が0.97と、ちょっとやりすぎたくらいビッタリはまったデータになっています。
各パラメータの影響度はCoefficients(偏回帰係数)で見ることができます。

a1 : 0.027
b1 : 0.027
c1 : 0.050

全ての偏回帰係数がプラスになっているので、a,b,cいずれも「1」の方が効果がCVRに対して貢献していると言えます。「2」の方が貢献している場合はマイナスになります。
a1, b1, c1を比較すると、c1が大きな値となっています。つまり、「c」のパラメータがCVRに対して、高い影響力を持っていると解釈することができます。
そのため、効率的にCVRを上げるためには、「c」の部分を優先的に考えた方が良いと言うことができます。

*注:
ここでは簡略化して通常の線形回帰を行いましたが、集計済みの「CVR」を被説明変数として使うのではなく、集計前の「CVしたかどうか」を被説明変数として使うほうが望ましいと思います。「CVしたかどうか」は「0/1」のデータになるので、線形回帰ではなく、ロジスティック回帰を利用します。ツール化する場合などは、ベイジアンフィルタのような機械学習で、都度都度、影響度を更新していくような手法の方が良いと思います。

それぞれの交互作用を知る

これまでは、各要素「a1,a2」、「b1,b2」、「c1,c2」は互いに独立して存在していることを仮定していました。どういうことかというと、各要素間に関連性が無いということを前提としています。
この前提を変更してみて、各要素間で影響を与え合っていると考えてみます。
「a1」、「b1」、「c1」は同じコンセプトのデザインを採用していると考えてみましょう。「a2」、「b2」、「c2」はバラバラのデザインです。であれば、「a1とb1の組み合わせ」、「a1とc1の組み合わせ」、「a1とc1の組み合わせ」は同時に行うことで効果を発揮しているのではないかと考えることもできます。「a1b1」、「a1c1」、「b1c1」の組み合わせに該当する結果を抜き出して、CVRの平均を出してみます。

CVR(平均)
a1b1 8.90%
a1c1 9.60%
b1c1 9.70%

先ほどの結果では、「C」が大きな影響力を持っていたので、c1を含む項目が高い数値になるはずですが、c1を含まない「a1b1」もそれほど大きな違いはありません。もしかすると、「a1b1」の組み合わせがプラスの効果を生んでいるかもしれません。

先ほどと同様に、数量化I類で分析してみます。各要素間の組み合わせも、要素内のパターンと同様に、「0」と「1」で表すことができます。
上のデータに3つの組み合わせを追加したものが下の表です。

a1 b1 c1 a1b1 a1c1 b1c1 cvr
パターン1 1 1 1 1 1 1 11.8%
パターン2 1 1 0 1 0 0 6.0%
パターン3 1 0 1 0 1 0 7.4%
パターン4 1 0 0 0 0 0 3.0%
パターン5 0 1 1 0 0 1 7.6%
パターン6 0 1 0 0 0 0 2.9%
パターン7 0 0 1 0 0 0 6.1%
パターン8 0 0 0 0 0 0 0.9%

このデータを基に重回帰分析を行います。

> data
  a1 b1 c1 a1b1 a1c1 b1c1   cvr
1  1  1  1    1    1    1 0.118
2  1  1  0    1    0    0 0.060
3  1  0  1    0    1    0 0.074
4  1  0  0    0    0    0 0.030
5  0  1  1    0    0    1 0.076
6  0  1  0    0    0    0 0.029
7  0  0  1    0    0    0 0.061
8  0  0  0    0    0    0 0.009
> res <- lm(cvr~., data=data)
> summary(res)

Call:
lm(formula = cvr ~ ., data = data)

Residuals:
        1         2         3         4         5         6         7         8
 0.002375 -0.002375 -0.002375  0.002375 -0.002375  0.002375  0.002375 -0.002375

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.011375   0.006284   1.810    0.321
a1          0.016250   0.008227   1.975    0.298
b1          0.015250   0.008227   1.854    0.315
c1          0.047250   0.008227   5.743    0.110
a1b1        0.019500   0.009500   2.053    0.289
a1c1        0.001500   0.009500   0.158    0.900
b1c1        0.004500   0.009500   0.474    0.718

Residual standard error: 0.006718 on 1 degrees of freedom
Multiple R-squared: 0.9945,     Adjusted R-squared: 0.9615
F-statistic: 30.17 on 6 and 1 DF,  p-value: 0.1385

影響力を示す偏回帰係数は
a1 : 0.01625
b1 : 0.01525
c1 : 0.04725
a1b1 : 0.0195
a1c1 : 0.0015
b1c1 : 0.0045

となります。当然結果は、これまでと同様、「c」の影響力が強いということには、変わりありませんが、「a1b1」の組み合わせも「0.0195」あり、「b」、「c」よりも大きな影響力を持っています(残りの2つの組み合わせの影響力は弱い)。
どういうことかというと、「a1」と「b1」を組み合わせると、スペシャルボーナスとしてCVRが上昇するということです。なので、この2つは同時に表示させることで、より大きな効果が上げられると言えます。
全部の組み合わせについて調べることもできますが、キリがないので、これくらいでやめておいたほうが無難だと思います。
このような組み合わせによる効果を実験計画法では、「交互作用」と呼びます。実はこの「交互作用」こそ重要で、無視できない要因です。これはまた次回書きます。

MVTから何がわかるのか?

まとめると、MVTを分析してわかることは以下の3点です。

  • どのパターンのCVRが高いのか
  • どの要素(パラメータ)がCVRに強い影響を与えているのか
  • 要素間の交互作用はどれくらい強いのか

MVTを実施するには、この3つを抑えておかないと、やる意味が全くありません、とまでは言わないですがもったいないです。ここまで分析して初めてMVTを実施する価値がでます。MVTは単にまとめてテストを行うために実施するのではありません。この3つのデータを得るために行うものです。

ただ、これまでの分析を否定するような言い方になりますが、総当り方式の長所の一つは、このような複雑な分析をしなくても、結果だけで全て判断できるということもあります。今回のテストで言うと、何も考えずとも「パターン1」が最適な組み合わせだということができます。ちゃんと検定さえすれば、結果を見誤ることはありません。しかし、タグチメソッドを使うと、これが簡単に言えなくなってしまいます。
次回、タグチメソッドについて書くことにします。