多変量解析

統計モデリングとは何か?線形モデルから階層ベイズまでを徹底解説

統計モデリングと聞くと非常に堅苦しいイメージを持つかもしれませんが、統計を語る上で非常に重要な考え方が統計モデリングなんです。

この記事では、そんな統計モデリングを出来るだけ簡単に説明していきます!

ウマたん
ウマたん
数式も出てくるけど、フーンくらいに思っておいていてくれたら良いよ!

回帰分析と非常に関係が深いので、先に以下の記事を読んでみることをオススメします。

回帰分析の理論とRでの実装! こんにちは! この記事では最も一般的でビジネスシーンでもよく使われる「回帰分析」について説明していきます! データ解...

この記事では、通称「緑本」と呼ばれている以下の本を参考にしています。非常に読みやすく分かりやすいので一読することをオススメします。

最も単純な線形モデルから順に拡張されたモデルを紹介していきますよー!

統計モデリングとはそもそも何か

まずは、統計モデリングとは何か・統計モデリングがなぜ必要か見ていきましょう!

普段なんとなーく線形回帰分析を使っていませんか?

実は線形回帰分析というのは目的変数の分布に正規分布を仮定しているという制限があるのです。

ビジネスシーンで使われるデータは正規分布に従っていないことが多く、それらを分析に用いる時は注意が必要です。

ちなみに以下のようにBox-cox変換を用いることで無理やり正規分布に近似させる方法もあります。

Box-cox変換を用いて正規分布に従わないデータを解析をしてみよう! こんにちは! あるデータに対して線形回帰分析(一般的に用いられる重回帰分析)を行ってみたけど上手くいかない・・・ そ...

そこで重要なのが、そのデータに合ったモデルを定義すること。すなわちそれが統計モデリング。ポアソン回帰やロジスティック回帰などは統計モデリングの初歩的手法ですね。

ただ、ここで大事なのは複雑な手法を知ることではありません。世の中のデータの真値に完璧に一致する分布など存在しません。

いかに手元にあるデータからそのデータの母集団分布をコスパ良くモデリングすることができるか。

必ずしも複雑なモデリングをすれば良いというわけではないので注意が必要です。

統計モデリングの種類

まず、いくつかのモデリングのステップがあることを覚えておきましょう。

線形モデル(単回帰分析)

一般線形モデル(よく使う重回帰分析とか)

一般化線形モデル(ポアソン回帰・ロジスティック回帰とか)

一般化線形混合モデル

階層ベイズ

下に行けば行くほどモデリングが複雑になってきます。

正直、一般化線形モデルまではビジネスシーンで使いますがそれ以降はあまり使う場面ないかもですね。

統計モデリング①:線形モデル

線形モデルは次の式で表されます。
\begin{eqnarray*}
{y_i}&=&{{\bf x}_i^T}{\beta}+{\epsilon_i},{\epsilon_i}\sim N(0,\sigma^2)\\
\end{eqnarray*}
線形モデルの特徴は\({\bf x}_i\)を与えた時の\(y_i\)の条件付き分布が正規分布に従うというところです。特に、誤差分散が全ての\(i\)に対して同一である場合に限ります。すなわち、次の様になります。
\begin{eqnarray*}
{y_i}|{\bf x_i}\sim N({{\bf x}_i^T}{\beta},\sigma^2)\\
\end{eqnarray*}
いわゆる通常の単回帰分析のモデルですね。パラメータは通常の最小二乗法で推定します。

統計モデリング②:一般線形モデル

一般線形モデルは線形モデルの拡張であり次の式で表されます。
\begin{eqnarray*}
{\bf Y}&=&{\bf X}{\bf B}+{\bf E},{\epsilon_i}\sim MVN({\bf 0},{\bf \Sigma})\\
\end{eqnarray*}
\({\bf X}\)は計画行列を表します。
一般線形モデルの特徴は\({\bf X}\)を与えた時の\({\bf Y}\)の条件付き分布が多変量正規分布に従うというところです。特に、誤差分散共分散行列が任意の正定値対称行列になります。パラメータは(重み付き)最小二乗法で推定します。

線形モデルから一般線形モデルへと拡張することで重回帰分析・分散分析・共分散分析などを同じモデルとして表すことが出来ます。

それだけでなく、目的変数が複数の場合である、多変量重回帰分析や多変量分散分析もこのモデルで表されます。

多変量重回帰分析は、詳細な日本語の文献もほとんどありません。後々、まとめていきたいと思います。

統計モデリング③:一般化線形モデル

線形モデルでは、目的変数は正規分布を仮定していました。

しかし、世の中のデータには正規分布に従うとは考えづらいデータも多く存在します。そこで、さらに拡張されたものが一般化線形モデルです。

例えば、「\(n_i\)個体中\(y_i\)個体が生存した」というのを目的変数とする場合には、目的変数が二項分布に従うロジスティック回帰モデルになります。
ロジスティック回帰モデルは次の式で表されます。
\begin{eqnarray*}
&&{y_i}|{p_i}\sim B(n_i,p_i)\\
&&log\left(\frac{p_i}{1-p_i}\right)={{\bf x}_i^T}{\beta}\\
\end{eqnarray*}

他にも例えば、「アイスが\(y_i\)個売れた」というのを目的変数とする場合には、目的変数がポアソン分布に従うポアソン回帰モデルになります。
\begin{eqnarray*}
&&{y_i}|{\lambda_i}\sim Po(\lambda_i)\\
&&log(y_i)={{\bf x}_i^T}{\beta}\\
\end{eqnarray*}

一般化線形モデルでは、パラメータは最尤法で推定します。

統計モデリング④:一般化線形混合モデル

一般化線形混合モデルは、サンプルに個人、場所、時間などのグループ構造が存在する場合にグループ間の差による変動も組み込んだモデルです。

例えば、次の様なデータを想定します。業界別に「経常利益」・「純資産」・「一年以内に倒産したか」を集めたデータです。

このデータから倒産予測モデルを作りたいと考えます。

表:倒産データ

このデータでは、目的変数は「一年以内に倒産したか」という二値のデータになるので、二項分布に従うと考え、ロジスティック回帰を適用しようとします。

しかし、感覚的には業界によって倒産のしやすさも異なってくると考えられます。つまり、「業界間の変動」を考慮する必要があります。

通常のロジスティック回帰である一般化線形モデルでは、この「業界間の変動」は存在しないものとしてモデル化してしまいます。そこで、一般化線形混合モデルを用います。
各企業\(i\)について、\(y_i\)を「一年以内に倒産したか」、\(x_{i1}\)を「経常利益」、\(x_{i2}\)を「純資産」とすると、次の様なモデルになります。
\begin{eqnarray*}
&&{y_i}|{p_i}\sim B(1,p_i)\\
&&log\left(\frac{p_i}{1-p_i}\right)={{\bf x}_i^T}{\beta}+{r_j}\\
&&{r_j}\sim N(0,s^2)\\
\end{eqnarray*}
ここで、\(r_j\)は「業界間の変動」を表す変量効果であり今は正規分布を仮定しています。\(j\)は業界を表します。

一般化線形混合モデルでは、パラメータを推定する時、\(r_j\)も推定しようとするとパラメータの数が多すぎ最尤法では不安定になったり、そもそも最尤法では推定出来ないこともあります。推定したいのは\(\beta\)だけなので\(\beta\)のみを推定することにします。

その方法は積分によって\(r_j\)を消し去ることです。そうすることで、\(\beta\)と\(r_j\)の正規分布のパラメータ\(s\)のみになり、最尤推定することが出来ます。

しかし、変量効果が多くなると消し去るパラメータの数も多くなります。すると、その分だけ積分回数も増えてしまいます。多重積分は計算時間もかかり、推定も不安定になります。そこで、MCMCを用いる階層ベイズモデルが必要になります。

統計モデリング⑤:階層ベイズモデル

階層ベイズモデルは一般化線形混合モデルをベイズ化したものになります。

一般化線形混合モデルの説明で、変量効果が多くなった時にはMCMCを用いるのが良いと述べました。MCMCはベイズの一つではありませんが、ベイズと深く関わるものです。

そこで、一般化線形混合モデルをベイズ統計学の枠組みで再構築したものが階層ベイズモデルになります。

ベイズ統計学ではパラメータも確率変数であると考えます。すなわち、ただ一つの真値を持つのではなく、何かしらの確率分布に従うと考えます。

先ほどの例でいうと、\(r_j\)が正規分布に従うと考え、\(r_j\)のパラメータ\(s\)がさらに何かしらの分布に従うと考えます。
倒産予測モデルのパラメータの関係を図にして表してみます。

図:階層のイメージ

この図の様に、「パラメータのパラメータのパラメータの…」という様に「階層化」されるため階層ベイズモデルと呼ばれます。

統計モデリングを実装するには

統計モデリングを実装するにはどうすれば良いか。

基本的に一般化線形モデルまでは、RやPythonに入っている関数を使えば簡単に実装することが可能です。

RやPythonに関するオススメ書籍は以下にまとめています。

厳選10冊!データ解析(R・Python)の勉強におすすめな本こんにちは!デジタルマーケターのウマたん(@statistics1012)です 統計学を勉強する学生やデータ解析を行う方々が良く使...

しかし、階層ベイズを使い複雑なモデリングを行いたい場合はStanという新たなモデリングツールを使うことをオススメします!

Stanはあまり良い書籍が出ていないのですが、以下の本はオススメです!Stanを勉強したいなら絶対目を通しておくべきです。

 

Stanを勉強する上でのオススメ本は以下にまとめていますので良ければご覧ください!

複雑な統計モデリングに便利!Stanの勉強法とオススメ本!こんにちはデジタルマーケターのウマたんです! 大学院時代は統計学を専攻しており、ベイズ統計学などの研究をおこなっていました。 ...

しかし、プログラミングは勉強方法が分かっても勉強を続けるのは忍耐力がいります。こちらの記事でプログラミング学習に挫折しない方法をまとめていますので良ければご覧ください!

プログラミングを挫折しないで勉強し続けるには?こんにちは! 事業会社でWebマーケ・データ解析屋さんとしてお仕事をしているウマたんです。 大学時代に様々なプログラミング言...

統計モデリング まとめ

統計モデリングについてみてきました。

最後にまとめておきましょう!

■統計モデリングの種類
・線形モデル
・一般線形モデル
・一般化線形モデル
・一般化線形混合モデル
・階層ベイズモデル

■統計モデルは解析したいデータの特徴に合わせて選ぶ必要がある。
・目的変数は連続変量か離散変量か?
・正の値のみか負の値もとるか?
・上限や下限はあるか?
・データにグループによる変動(変量効果)は存在するか?
・変量効果はいくつあるのか?

■モデルと推定方法の関係
線形モデル・一般線形モデル:最小二乗推定
一般化線形モデル・一般化線形混合モデル:最尤推定
階層ベイズモデル:ベイズ推定

■推定を実現する数値計算方法
最尤推定:ニュートン法・準ニュートン法
ベイズ推定:MCMC

以下の本を読めば線形モデルから階層ベイズまでの流れをスムーズに理解することができます。

この本は圧倒的にオススメなので是非読んでみてください!

また統計学全般に関してのオススメ本を以下の記事にまとめていますので良ければご覧ください!

厳選30冊!統計学を勉強する上でおすすめな本こんにちは!元統計学専攻の大学院生、ウマたん(@statistics1012)とシンエーです。 今ではデジタルマーケティング関連の...