自社のサービスにベイズ統計モデリングを取り入れたいので勉強したこと。


# はじめに

こんにちは、あるいは、こんばんわ。[LITALICOアドベントカレンダー2](https://qiita.com/advent-calendar/2021/litalico)の21日目の投稿です。LITALICO入社1年目のsaitoがお送りします。

LITALICOで私がやりたいことはたくさんあるのですが、今日は、その中でも、短期的に取り組みたいことについて書かせていただきます。私は、LITALICOのサービスと統計モデリングは親和性が高いと考えて、必要に応じて取り入れたいと考えております。正直、そこまでの知識を持っていないです、ですが、様々な方が書籍やWeb上でわかりやすく解説をしてくださっており、使う側としての知識を身につけることは容易になったと思います。自社のサービスに良い影響があるのであれば、柔軟に取り組んでいきたいと考えております。

この記事では、前段となる知識について、私が勉強してきたことを整理したいと思います。私は専門で心理学や統計を研究している訳ではありません、間違っているところがあれば、お手数ですが、コメントで指摘を頂けますと幸いです。

# 統計モデリングとは

そもそも、統計モデリングとは何かって、結構難しいと感じました。

[StanとRでベイズ統計モデリング (松浦, 2016) ](https://www.amazon.co.jp/Stan%E3%81%A8R%E3%81%A7%E3%83%99%E3%82%A4%E3%82%BA%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0-Wonderful-R-%E6%9D%BE%E6%B5%A6-%E5%81%A5%E5%A4%AA%E9%83%8E/dp/4320112423)のはじめにでは、下記のように書かれています。

> 統計モデリングとは確率分布を使った数理モデルをデータに当てはめて現象の理解と予測を促す営みだ

はいはい、なるほど。。。確率分布を使った数理モデルね。いやいや、そもそも、数理モデルって何よと。

数理モデルに関しては、[その問題、数理モデルが解決します (浜田, 2018) ](https://www.amazon.co.jp/%E3%81%9D%E3%81%AE%E5%95%8F%E9%A1%8C%E3%80%81%E6%95%B0%E7%90%86%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%99-%E6%B5%9C%E7%94%B0-%E5%AE%8F/dp/4860645685)の説明がわかりやすいかと思います。

> モデルとは、現実世界を単純化・抽象化したものであり、明確な仮定からなる

数理モデルは、現実世界を単純化・抽象化して、数式で表したものと考えてみると、ピンと来るものもあるのではないでしょうか。学校の理科の授業で習う数式も現実世界を単純化・抽象化して、数式で表したもの、つまり、数理モデルの1つということです。

例) 坂道を自転車で下る

![坂道自転車.drawio (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277180/6f27d215-b4f1-b762-76d7-bf223c531466.png)

確率分布を使った数理モデルのことを確率モデルといいます。
上記の例では、確率分布は使っておりませんので、数理モデルではありますが、確率モデルではないということになります。

つまり、統計モデリングとは、現象を単純化して確率を使って捉え、理解したり予測することと、私は考えています。

ここで問題となるのは、従来の統計学的な分析も確率を使って記述されることもあるということです。統計学的な分析と、統計モデリング、この2つの違いはどこにあるのでしょうか。

# 統計学的な分析と統計モデリング

こちら、Webの方に非常に参考になる記事がありました。

日本心理学会のページで、[心理学ワールド 90号 統計モデリングの記事 (清水, 2020) ](https://psych.or.jp/publication/world090/pw15/)です。

> 統計分析では確率モデルは固定して，母数についての仮説（たとえば母集団の平均値差の有無）に注目します。（中略）確率モデルは決まっていて，そのモデルに含まれるパラメータの推定と有意性検定の結果に関心があります
> 統計モデリングは確率モデルを分析者が選択あるいは作成し，そのモデルがデータ生成を説明・予測できているかを評価することに主眼があります。（中略）決められた確率モデルにデータをあてはめるのではなく，データに合わせて確率モデルを選択するのが統計モデリングの第一の特徴です

数理モデルを数式で記述する際に、変数と定数を使って記述します。

例）３観測変数、1共通因子の因子分析の数式
![因子分析.drawio (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2277180/9630cee4-d1de-79d6-514a-7e721e8811c5.png)
上記のように、モデルは決まっていて、パラメータの推定をして、そこから更に分析したりするわけですね。

それに対して、統計モデリングでは、モデル自体もデータに合わせて変更し、より複雑な現象もモデル化することができるようになります。この辺りを考えるに、目的が違うというのが大きいのかなと思います。統計モデリングで、データからモデルを選んでいく中で、結果、既知のモデルになることもあるでしょう。ですが、それは結果であって、現象をどのモデルで表現するのか、どのモデルで捉えることができるのか、モデルの評価を行っていくことに主眼があるように思います。それに対して、統計的な分析では、仮説を立てて、それに当てはまるのか、当てはまるにしても、パラメータはどんな値になるのか、パラメータを分析するとわかることに主眼を置いているのではないかと個人的には考えています。

複雑な現象を扱えるのであれば、統計モデリングの方が良いのではないかと考える方は多いのではないでしょうか。私も最初勉強していたときそう感じました。ですが、統計学的な分析の場合、計算量が少なく済むという大きな利点があります。統計モデリングの場合は、モデルが複雑化することもあり、計算量が多くなりがちです。最近はコンピュータの計算力が上がっていますが、計算量が多いということは、コストがかかるということでもありますので、どちらの方がよりサービスに適しているのか、考えた上で、アプローチ方法を検討する必要があります。

コストがかかる可能性を理解しつつも、自社のサービスに取り入れたいのは、LITALICOが取り扱っている現象の中でも、より複雑な現象について、その現象を理解し、予測し、そして、予測できるのであれば、対策を立てたいと考えたからです。その現象に対する深い理解という点では、統計モデリングは非常に向いております。

[上記で紹介した記事](https://psych.or.jp/publication/world090/pw15/)の中で、以下のような記述があります。

> 統計モデリングのさらなる特徴は，現象の理解をより深めるために，分析者が確率モデルを理論に基づいて作ることにもあります。（中略） その説明や予測が上手くいっているかをデータから確認します。

これは、その現象についてどう捉えているのか、知識に基づいて確率モデルを構築し、その確率モデルが適しているのか分析することで、現象のより正確な把握ができるということです。現象をより把握できるようになれば、効果的な対策を立てやすくなると私は考えています。

統計モデリングの方法もいくつかありますが、その中でも、ベイズ統計モデリングが現実的と考えています。

# ベイズ統計モデリング

さて、ベイズ統計モデリングと聞いて、私は、最初、ベイズ統計モデルというモデルがあるんだなと思いました。これは大きな間違いです。統計モデリングのパラメータを推定するのに、ベイズ統計の推定法であるマルコフ連鎖モンテカルロ法（MCMC）を使うと良いということです。

統計モデリングを行う上でのステップを大きく2つに分けると、下記になります。

1. モデルのタイプを選ぶ（どのようなモデルにするか決める、一般化線形か、ガンマ分布や二項分布など）
1. モデルのパラメータを推定する

モデルのタイプを選ぶに対しては、前述の通り、ここがある意味で、統計モデリングの肝です。知識に基づいて良さげな確率モデルを設定しましょう。この際、どのようにその現象を分析したいかで、複雑なモデルを設定したくなることもあります。または、最初は単純なモデルを選んだとしても、データに合わせて、モデルを更新していくうちに、複雑なモデルになることもあります。

先述の通り、統計モデリングで、より複雑なモデルを扱うと、計算量が増えます。これは、マシーンパワーの増強で解決できるのですが、そもそも、複雑なモデルを扱おうとする前段階としてパラメータを推定するのが大変になります。モデルが複雑な場合パラメータを解析的に解くことができなくなるからです。ちなみに、統計学的な分析の場合、パラメータを解析的に解く方法が既にわかっていることが多く、簡単に求めることができる場合が多いです。

MCMCについては、超有名な[データ解析のための統計モデリング入門](https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E2%80%95%E2%80%95%E4%B8%80%E8%88%AC%E5%8C%96%E7%B7%9A%E5%BD%A2%E3%83%A2%E3%83%87%E3%83%AB%E3%83%BB%E9%9A%8E%E5%B1%A4%E3%83%99%E3%82%A4%E3%82%BA%E3%83%A2%E3%83%87%E3%83%AB%E3%83%BBMCMC-%E7%A2%BA%E7%8E%87%E3%81%A8%E6%83%85%E5%A0%B1%E3%81%AE%E7%A7%91%E5%AD%A6-%E4%B9%85%E4%BF%9D-%E6%8B%93%E5%BC%A5/dp/400006973X)を読んでいただくのが良いと思いますが、簡単に自分の理解しているところを書きます。

MCMCは、モンテカルロ法を拡張したものです。モンテカルロ法は、円周率の計算などでも有名ですが、シュミレーションや数値計算を乱数と用いて行う手法の総称です。つまり、モデルのパラメータを解析的に解く方法がわからないので、乱数を用いて試行錯誤して、パラメータを推定しようということです。ただし、モンテカルロ法をそのまま使うと効率が悪いので、マルコフ連鎖を用います。MCMCの中にも複数のアルゴリズムがあるのですが、いずれも、サンプリングを行う際に、1つの前の状態に基づいて、次のサンプリング先を見つけるのがマルコフ連鎖であるため、マルコフ連鎖モンテカルロ法となりました。

前述の書籍で取り上げられているStanでは、MCMCのアルゴリズムが実装されているので、確率モデルを決めれば、パラメータ推定をStanで行うことができるということですね。

# 最後に

ベイズ統計モデリングを取り入れるために、自社のサービスに関わる現象をどのような確率モデルで捉えたいか、色々な方と話をしないとなと思っています。そのため、今回の記事は内部向けにも書いております。

また、冒頭で書かせていただいた通り、私は専門で勉強してこなかったので、LITALICOが取り扱っている教育、福祉の分野で統計モデリングを使って、サービスを作ることに興味を持っていただける方がいれば、一緒に取り組みたいという淡い期待もあります。

また、今回、ベイズ統計についても少し勉強をしまして、本筋ではなかったので、記事では取り上げていないのですが、ベイズ統計を活かして、推定方法を変えるのもありなのではないかと思っています。ベイズ統計のメリットである新しいデータの取り込みに対する柔軟性を自社のサービスで活かせるところもあるのではないか、と。例えば、一度に全てを調査するのではなく、段階的な調査とかですね。

来年のカレンダーでは、どのように統計モデリングを取り入れたかを書ければと思っています。もっともっと勉強もですし、実践しないとですね。

# 参考

- [StanとRでベイズ統計モデリング (松浦, 2016) ](https://www.amazon.co.jp/Stan%E3%81%A8R%E3%81%A7%E3%83%99%E3%82%A4%E3%82%BA%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0-Wonderful-R-%E6%9D%BE%E6%B5%A6-%E5%81%A5%E5%A4%AA%E9%83%8E/dp/4320112423)
- [その問題、数理モデルが解決します (浜田, 2018) ](https://www.amazon.co.jp/%E3%81%9D%E3%81%AE%E5%95%8F%E9%A1%8C%E3%80%81%E6%95%B0%E7%90%86%E3%83%A2%E3%83%87%E3%83%AB%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%97%E3%81%BE%E3%81%99-%E6%B5%9C%E7%94%B0-%E5%AE%8F/dp/4860645685)
- [心理学ワールド 90号 統計モデリングの記事 (清水, 2020) ](https://psych.or.jp/publication/world090/pw15/)
- [データ解析のための統計モデリング入門](https://www.amazon.co.jp/%E3%83%87%E3%83%BC%E3%82%BF%E8%A7%A3%E6%9E%90%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0%E5%85%A5%E9%96%80%E2%80%95%E2%80%95%E4%B8%80%E8%88%AC%E5%8C%96%E7%B7%9A%E5%BD%A2%E3%83%A2%E3%83%87%E3%83%AB%E3%83%BB%E9%9A%8E%E5%B1%A4%E3%83%99%E3%82%A4%E3%82%BA%E3%83%A2%E3%83%87%E3%83%AB%E3%83%BBMCMC-%E7%A2%BA%E7%8E%87%E3%81%A8%E6%83%85%E5%A0%B1%E3%81%AE%E7%A7%91%E5%AD%A6-%E4%B9%85%E4%BF%9D-%E6%8B%93%E5%BC%A5/dp/400006973X)
- [ベイズ統計モデリング (統計ライブラリー) ] (https://www.amazon.co.jp/%E3%83%99%E3%82%A4%E3%82%BA%E7%B5%B1%E8%A8%88%E3%83%A2%E3%83%87%E3%83%AA%E3%83%B3%E3%82%B0-%E7%B5%B1%E8%A8%88%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%83%BC-%E5%AE%89%E9%81%93-%E7%9F%A5%E5%AF%9B/dp/4254127936)