Excelで回帰分析②

統計分析

前回の統計分析シリーズでは、コンビニに関するデータを対象に線形回帰モデルを適用し、回帰分析を行いました。

dataspirits.hatenablog.com

その結果、回帰係数の有意性に問題はなかったものの、誤差分布が等分散性を満たしていないという問題が残りました。

今回は、誤差分布の問題を解消するために、元データを自然対数変換したいと思います。

対数変換とは

自然対数変換を簡単に言うと、ある数値を「その数はe(2.718くらい)の何乗か?」の答えに変換することです。

今回は扱いませんが、よりわかりやすい対数変換に常用対数変換というものがあります。

これは、ある数値を「その数は10の何乗か?」の答えに変換することです。

常用対数変換を行うと、10{10}^1なので1に、100{10}^2なので2に、1000{10}^3なので3になります。

10,100,100というデータが1,2,3というデータに変換されるので、データのばらつきかたや分布が変わります。

ただし、対数変換を行っても、上記の例のようにデータ要素の大きさの順番は変わりません。

データが持つ特徴や傾向をある程度保ちつつ、人間にとって扱いやすいデータに変えることが対数変換の目的と言えるかもしれません。

自然対数変換も同様で、およその数になりますが、10{e}^{2.3}なので2.3に、100{e}^{4.61}なので4.61に、1000{e}^{6.91}なので6.91になります。

Excelでは=LN()という関数で自然対数変換を行うことができます。

今後、単に対数変換という場合は、自然対数変換を指すこととします1

データを対数変換してみる

では早速、前回の分析データに対して対数変換を行ってみましょう。

元データはすべて正の実数なので、問題なく対数変換を施すことができます。

各都道府県のコンビニの数、人口、面積を対数変換し、それらのヒストグラム、およびそれらの組み合わせからなる散布図を掲載します2

f:id:dataspirits:20200725000058p:plain
f:id:dataspirits:20200725000109p:plain
f:id:dataspirits:20200725000129p:plain
f:id:dataspirits:20200725000137p:plain
f:id:dataspirits:20200725000149p:plain
f:id:dataspirits:20200725000201p:plain

ヒストグラムを見ると、元データは一番小さい値のビンにデータが集中していましたが、対数変換を施すとデータの分布がやや中央に移動しています。

また、東京の人口や北海道の面積など極端に大きい値は、他県のデータに近づいているようにみえます。

対数変換により比較的大きい値と小さい値とで縮尺が異なるためこのような結果となります。

次に散布図ですが、各都道府県のコンビニ店舗数と人口の関係がより直線的になっています。

対数変換前後のグラフに、線形回帰直線を加えたものを掲載します。

f:id:dataspirits:20200725000256p:plainf:id:dataspirits:20200725000309p:plain

元データの散布図では値が大きいほど直線からの上下のばらつきが大きいのに対し、対数変換後はそのばらつきが小さいです。

元データの回帰分析で発生した分散不均一性の問題が、今回は解消できそうな気がしてきました。

では、線形回帰モデルに当てはめてみましょう。

対数変換後の重回帰分析

今回はいきなり重回帰モデルへのあてはめをやってみます。

回帰結果は次の通りです。

f:id:dataspirits:20200724190259p:plain

回帰係数の有意性には引き続き問題なく、自由度調整済み決定係数も0.971と大きい値です。

残差の分布を見てみましょう。

f:id:dataspirits:20200725000338p:plain
f:id:dataspirits:20200725000350p:plain

データの分布が変わったことで、総人口が大きいほど残差のばらつきが大きい傾向や、総面積が大きいほど残差のばらつきが小さい傾向が比較的解消されています。

残差のヒストグラムも確認してみます。

f:id:dataspirits:20200724191432p:plain

きれいな左右対称形ではありませんが、比較的中央にデータが分布しています。

データが47個しかないので、きれいな正規分布にはなっていませんが、正規乱数を47個生成したときの分布として違和感のある結果ではありません。

以上より、対数変換を施したデータに対して線形重回帰モデルを適用することで、誤差分布がモデルの前提を満たした結果を得ることができました。

データが正の実数のみで構成されているものだったり、経済のストックデータの場合は、対数変換をしたほうが扱いやすいデータになることがあります。

ぜひ試してみてください。

次回の統計分析シリーズでは、これらの分析を実際に行ったエクセルファイルを公開し、どのような関数で計算したのかを解説したいと思います。


  1. 単に対数変換と言ったときに何を意味するかはその文脈や分野によって異なります。
  2. このとき、例えば人口であれば人単位の数値を対数変換するか、万人単位の数値を対数変換するかで回帰分析の結果は異なってきます。今回は万人単位の数値に対して対数変換を適用しています。

コメント

運営者

データ分析やモデル等の仕事をしてる人々。週に1回程度のペースで金融や統計に関する記事を更新しています。
C++/Python/R/SAS/HTML/VBA/PHP/SQL

naruseをフォローする
タイトルとURLをコピーしました