[ド素人]Alteryxで重回帰分析を勉強してみた #Alteryx

その変数にするのかい この変数にするのかい 勝手に選べよ だれも知らん
2019.06.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

どうも。DI部@大阪オフィスのtamaです。

以前、こちらの書籍とAlteryxを使って単回帰分析を勉強しました。

上記の組み合わせは、個人的になかなかいい感じだったので、今回は重回帰分析について勉強したいと思います。

重回帰分析とは

説明変数が複数ある回帰分析

単回帰分析のエントリにも書いていますが、単回帰分析でも、説明変数が複数ある場合は、重回帰分析となります。単回帰分析は目的変数と説明変数の1対1の関係を見ましたが、重回帰分析は、目的変数を説明している変数はどれか?というものを探っていく感じだと思っています。

ちなみに、学問やビジネスの分野でも非常にメジャーな分析手法だそうです。これは是非おさえておきたいですね。

直線ではなく平面を求める

単回帰分析は、散布図の中に引く直線を求める分析でしたが、これは説明変数が1つだから直線でした。重回帰分析は説明変数が複数ありますが、これを散布図上に描くとどうなるか…。すばり平面を求めることになります。空間の中に散らばるデータの分布を説明できる平面を探すということになります。

やってみる

サンプルデータ

アンケート設問

アンケートデータ

購買データ

重回帰分析の目的

データの背景

  • あるECサイトの顧客にアンケートをとった
  • アンケートの結果を受けて、ECサイトの改善とかキャンペーン施策とかを考えたい

重回帰分析から知りたいこと

  • 最終的には売上をあげたい
    • 「購買額の変化を説明する要素は何か」を知ることを目的とする

ワークフロー作成

書籍内はExcelでデータ前処理を行っていますが、本エントリでは全部Alteryxでやります。ということで作成したワークフローがこちら

2つのデータを顧客IDで結合して線形回帰ツールにつなげただけですね。ちなみに、途中の選択ツールはカラム名を英語にしています(文字化け対策)。

結果の解釈

自由度調整済み決定係数

単回帰分析と同じように、決定係数(R2)が出力されるため、この数値をもって判断してしまいそうですが、ちょっと待ちましょう。というのも、この決定係数という値は、説明変数が多いければ多いほど1に近づいてしまう性質があります

その影響を取り除いた値が、自由度調整済み決定係数(補正R2)です。重回帰分析の時はこちらをチェックします。

で、この値は、重回帰分析が、今回のデータに当てはまっているか(説明できているか)の指標となります。0.7以上なら当てはまっている、0.9以上の場合はむちゃくちゃ当てはまっているといえます。今回の結果も当てはまってるといえます。しかし、「じゃあ今回の分析結果が正しいということになるから、この結果をもとに進めよう!」というのは、まだ早いです。

変数選択の問題

単回帰分析の時にはp値というのがありました。その説明変数が効いているかどうかは偶然である確率…逆にいうと、p値が低いほど偶然ではないということになります。

で、今回の結果を見てみると「発送迅速(ship_spped)」のp値がすごく高いです。補正R2の値が良いからといって、この結果をもって施策を打っても、効果は出なさそうです。

重回帰分析では、こういったことがあるため、説明変数を取捨選択する必要があります。この問題のことを変数選択の問題と言います。変数選択の方法には色々ありますが、今回は一般的な変数減少法を行いたいます。

仕組みは簡単。p値が一番高いものを抜く→重回帰分析する、を繰り返します。

Alteryxで変数減少法

「なんかそういうツールがあるのか」って感じの見出しですが、ここは普通にp値が高いものを対象から外していくだけです。

「発送迅速」を抜いて実行すると、下記の結果となりました。

今度は「再訪」(again)のp値が高いです。ですので、今度は「再訪」を抜いて重回帰分析を実行します。

…っていうのを、全ての説明変数のp値が0.05になるまで繰り返します。…と言われると、それ以降は不要なのかと思いますが、ここからさらに説明変数が1つになるまで繰り返すと、今度は補正R2の値が悪くなります。ですので、そこのバランスを見極めないとダメということです。

0.05というのは、p値の目安の1つです。これは有意水準といいます。(よく使う値の1つが5%)。

最終結果

全ての説明変数のp値が0.05以下になるまで分析した結果がこちら。

補正R2も高いため、良い結果になったんじゃないでしょうか。

さて、問題はここからです。この結果をどう解釈して、次のアクションにどう繋げるか…です。

一番左の係数(Estimate)を見ましょう。number_of_purchases…購買回数が7426.2となっていますが、これは、購買回数が1回増えるごとに、購買額(今回の目的変数)が約7426円上がるだろう、ということです。同じ理屈で、service(サービス)が1あがると、7907円増えるということになります。サービスというのは、アンケートで「当社のカスタマーサポートは満足しましたか」という問いに対して5段階評価でもらえるものです。つまり、カスタマーサポートの品質を上げれば、購買金額も増える可能性があるということです。

逆に係数がマイナスなのは、説明変数が上がるごとに購買金額が下がるということです。訪問経路がネット検索やネット広告の場合は、他の経路より購買金額が下がるだろう、ということです。

この結果をもっていえるのは、購買回数を増やすようなキャンペーンを行ったり、カスタマーサポートの品質を上げるための施策を検討していく必要がある…ということになります。

おわりに

重回帰分析はまだまだ学ぶことが多いので(マルチコなど)、Alteryxでそれを処理する方法とかをやっていきたいですね。