非エンジニアにもわかるR言語で何ができるか?【データマイニング】 その2


r3

はじめに

「風が吹けば桶屋が儲かる」

pic

この言葉の意味をご存知でしょうか。何故、風が吹くと桶屋が儲かるのでしょう。

 大風で土埃が立つ
→土埃が目に入って盲人が増える
→盲人は三味線を買う
→三味線に使う猫皮が必要になり、猫が殺される
→猫が減れば鼠が増える
→鼠は桶をかじる
→桶の需要が増え桶屋が儲かる

 

ある事象の発生により、一見すると全く関係がないと思われる物事に影響が及ぶという日本古くから伝わることわざです。また、現代でも連関規則の有名な例として広く知られています。この連関規則を扱った記事を以前こちらに書かせて頂きました。

今回の記事では、データマイニングに関する回帰分析の導入の部分をみなさんにお伝え出来たらなと思います。主な目的は、回帰分析を用いて購買データを分析することで、顧客の未来の購買や行動を予測し、マーケティング上有用な知見を得ることを目的とします。

回帰分析って何?

回帰分析とは、結果となる数値と要因となる数値の関係を調べて、それぞれの関係を明らかにする統計的手法です。仮に、「身長」と「体重」の関係を回帰分析を用いて分析するとしましょう。

体重は身長に比例するという仮説を立てると、

y = ax + b

というモデルを作ることができます。これに従うとすると、

体重 = a*身長 + b

というモデルを作ることになります。そして、データを分析し、この”a”と”b”の値を求めモデルを完成させることが回帰分析です。

pointr

要因となる数値を「独立変数」、結果となる数値を「従属変数」といいます。今回のケースでは、「独立変数」は”身長”、「従属変数」は”体重”となります。

sample3

今回取り上げる回帰分析は、”単回帰分析”という1つの従属変数を1つの説明変数で予測するものです。今回は例として、顧客の年齢から、それに対する購買金額を予想してみましょう。

実際に回帰分析してみる

今回取り扱うデータは、ユーザのIDや年齢、購買金額などが含まれたデータを対象とします。

data
(一部抜粋)

このデータに回帰分析を行うと、

sample2

上記のような結果が得られました。

単回帰分析のモデル式をy=ax+bとした場合、”Estimate”の列にaとbの推定値が出力されます。今回の場合は、a = 0.0132、b=10.603という値が出力されています。

“Std.Error”は標準誤差のことで、aとbの推定値のばらつきを表しています。”t value”は「a=0」もしくは「b=0」を帰無仮説とした時のt値の値のことで、その検定結果のp値が”Pr(>|t|)”の列に書かれています。

従って、この値が0.05以下の時に帰無仮説を棄却して、「aまたはbの値が0でない」と判断し、結果の解釈を行うことが出来ます。今回の例では、年齢、購買金額ともに有意差が出ていますので、結果を解釈することが出来ます。

と説明しましたが、一度も統計学を学んだ事がないと「???」という内容だと思うので、もう少し掘り下げて説明します。

よくわからなかった方はこちら!

まず、こちらのデータを使って簡単に説明します。

weight

上記は女性と男性、五名ずつの体重に関するデータとなっています。ここで一つ、質問したいと思います。

「上記データにおいて,女性と男性とでは体重の平均値に差があるといえますか?」

さて、どうでしょう。

単純計算すると、女性平均体重 = (41+50+47+40+45)/5 = 44.6、男性平均体重 = (59+68+58+55+72)/5 = 62.4

男性体重-女性体重=61.8-49.4=17.8 ≠ 0 となるので、「平均値に差がある」と断言出来ます。当たり前すぎて「何を言っているんだろう」と思われるかもしれません。しかし、次の質問はどうでしょう。

「上記データにおいて、世間一般の女性と男性とでは体重の平均値に差があるといえますか?」

二つの質問の違いを理解していない方は「当然、これも差があるだろう」と考えてしまうかもしれません。ですが、それは誤りです。

世間一般の男女間の体重に差があるかどうかを正確に検証する場合は、世の中全ての男女の体重データを収集する必要があります。さらに言えば、体重データは常に変動し続ける為、未来、過去、あらゆるデータも収集し、予測しなければなりません。これは、あまりにも現実的な話ではありません。そのため、取得出来る範囲の人数のデータの中で、「推測」していく必要があるのです。

今回のケースでは、対象としたデータがたまたま重い男性を選んでしまっていたり、軽い女性を選んでしまっていた、ということも考えられるので、一概に「上記データから、世間一般の男女間の体重に差がある」とは言えません。そこで、t検定という統計学的検定法を使用し推測していきます。

t検定って?

t検定は2つのグループの平均の差が偶然誤差の範囲内にあるかどうかを調べるものです。今回のケースでは、特定のデータの中から「一般的に男女間の体重に差があるか」を推測し、検定します。

実際に、上記データからt検定を行うと、

t値 = -4.7709
自由度 = 8
確率 = 0.001470

という結果を得る事が出来ます。

この結果の解釈としては、

「男女間に差がない仮定して、体重差「12.4」差があるということが発生する確率は「0.14」%である」→
「発生する確率が1%未満しかない」→
「滅多に起こらないので、多くの場合、差がないとは言えない」→
「ということは,本当は差がある」

となり「世間一般レベルでも男性と女性の体重平均値には差がある」という結論に至る事が出来ます。

従って、話を元に戻しますが、

pointp

回帰分析を行った際に、このp値が0.05以下の時に、結果の解釈を行うことが出来ます。よって、今回は従属変換を対数変換し回帰分析を行っているので、log(購買金額) = 10.603+0.0132*年齢という回帰式が得られます。

この結果から、もし仮に30歳、40歳の購買金額を予測するとした場合、

11.603+0.0132*30(歳) = 11.065
exp(11.065) ≒ 63895(円)

11.603+0.0132*40(歳) = 11.131
exp(11.065) ≒ 68254(円)

と予測することができます。

さいごに

今回の内容は、回帰分析に関するほんの導入の部分に過ぎませんが、回帰分析に関する詳しい説明は、次回持ち越しとさせて頂きます。この記事が皆さんがデータマイニングを学習する、ちょっとしたきっかけになれば幸いです。

ライター:村上司
2012年秋、GMOアドパートナーズ株式会社へ入社。 現在は、GMOアドパートナーズ株式会社所属、出向先を、 GMOサーチテリア株式会社としてアプリ開発エンジニア担当。 社内初の新卒エンジニアとして、日々精進しております。

グラフハックアワード

Related Posts Plugin for WordPress, Blogger...