マーケティングサイエンス学習録

勉強したことをとりあえずここに集積していきます。

線形回帰の心構え Tips 10個

(一般化)線形回帰モデルを実務で使うことも多く、頭の中にケーススタディを大量にインプットするためこちらの本を読んでいます。

https://www.amazon.co.jp/Regression-Stories-Analytical-Methods-Research/dp/110702398X

少し高いですが、無料でPDFも公開されているので安心です(私はペーパーバック購入しました。)回帰モデルを実務で使う際の注意点など、実務家観点で多くのケーススタディが載っています。実際のデータでは、回帰モデルの仮定を満たすような綺麗なデータの方が珍しく、現場で培われてきたノウハウを知りたい!という人には適した1冊だと思います。

この本の最後の方に「10 quick tips to improve your regression modeling」という章があります。モデルそのものの改善方法というよりは、回帰モデリングをする際の心構え的なTipsです。 今回はこちらを私の備忘も兼ねてブログに残します。ただし筆者なりの解釈なので、原文に全て沿っているわけではありません。詳しくは原本をご参照ください。

データセットに対する推定結果の変動と再現性を確認しましょう

同じ回帰モデルを異なるデータセットにフィッティングすることで、推定結果の変動・再現性*1を確認しましょう。異なるデータセットとは言っても、完全に無関係なものではなく、同じ実験を複数回実施してデータセットを複数個用意するということだと思います。同じ実験をローコストで繰り返し実施できる分野では良いですが、社会科学のように観察データしか手に入らない分野では、異なる地域ごとにフィッティングするなどして、見落としている異質性がないか確認することも推奨しています。

有意か否かに固執しすぎるのは辞めましょう

p値や、信頼区間が0を含むか否かに固執しすぎるのは辞めましょう。p値はノイズを含んでいますし、効果量がぴったり0となる処置はありません。回帰係数が有意ではないからと言って即座にその変数を無価値だと捨てるのは辞めましょう。

とにかくグラフをたくさん描きましょう

EDAとしてデータを可視化することはもちろん大切ですが、同時にFitted modelのグラフをたくさん描きましょう。単にデフォルトで表示される推定結果テーブルではなく、推定結果のプロットを異なる視点からたくさん描きましょう*2。また、Q-Qプロットや残差プロットのようなDiagnosticsでデフォルト表示されるものを思考停止で眺めるのを辞めましょう。プロットするからには、そこに仮説などの説明責任があります。

回帰係数は比較で理解しましょう

回帰係数をそのまま「効果量」として解釈するのはミスリーディングです。より正確には、他の共変量が全て同じ場合に、当該共変量の変化が目的変数に与える効果量です。何と何を比較したときの効果量なのか?明確に理解しましょう。

人工データを作成してみましょう

人工データを作成するのは、あらゆる点で非常に有用です。例えば、

  • 人工データを生成するときにはデータの構造を想像する必要があります。変数間の依存関係や、検証したい効果量の大きさ・向きなどを明確にしないと人工データは作成できません。人工データ作成のステップを踏むことで、今何を検証したいのか?何を仮定としているのか?を明確にすることができます。

  • 検証したいことが、今のモデルで検証できるのか?がわかります。人工データは真の値を把握できるので、今のモデルでそれを正しく推定できるか否かが検証できます。

  • プログラムが正しいか否かがわかります。実務データにおいて想定と異なる結果が出てきた場合、それがデータ起因なのかモデル起因なのか、はたまたプログラムのバグなのか判断が難しいです。人工データであれば、それらの切り分けが可能です。

  • 仮定を外したときに、どのようなバイアスがかかるかシミュレーションできます。例えば、特定の変数が入手困難している場合や、効果量が想定よりも小さかった場合にどのような推定結果になるかがわかります。

たくさんのモデルを試しましょう

とにかくシンプルなモデルからスタートして、徐々に複雑にしていきましょう。その過程でたくさんのモデルを試しましょう。もちろん実際のケースでは、最終的に複雑なモデルの方がパフォーマンスが高くなることが多いです。しかし最初から複雑なモデルからスタートして、一晩中コンピューターに計算させて1日1モデルを試すようなプロセスは避けるべきです。少しずつピースを足していくことで、「今自分は何をしているのか?」を常に説明できるようにしましょう。たった1回しかモデリングをしていないのに、そこから壮大なストーリーを語るのは避けましょう。

モデリングのワークフローを整備しましょう

前述の「たくさんモデルを試す」に通じますが、モデリングをたくさん試せるようにフローを整備しましょう。これは統計学とは関係ないと思われますが、実は非常に重要です。毎回スクラッチモデリングするのではなく、型化してモデリングに時間を割けるようにしましょう。*3 また、試したモデルは記録できるようにしましょう。どのような思考プロセスを経て最終モデルに至ったのかトラッキングできるようにしましょう。

変数変換を考えましょう

対数変換や標準化を考えましょう。これらはRaw dataや残差の可視化が参考になります。また、相互作用項が有用と思えば積極的に考慮しましょう。使える情報は全て使いましょう。

因果効果の推定には慎重になりましょう

回帰係数を因果効果を主張するには、きちんと因果推論の仮定を満たすかいなか慎重に検討しましょう。そうでない限り因果効果と主張するのは辞めましょう。例えば、treatment/controlの割り当てや、A/Aテストによる同質性の確認など、因果推論には多くの仮定が必要です。因果効果の推定には慎重になりましょう。

実際のケーススタディで学びましょう

ケーススタディを学んだり、実務においてたくさんの経験をしましょう。その際には、モデルを正しく理解して、データの性質を理解して、人工データの作成や可視化を通して自分が何をしているのか?を理解するようにしましょう。回帰係数の結果も、ただ符号を見るだけではなく、きちんと解釈するようにしましょう。

*1:同じような結果が出るのか?データセットごとに激しく変動するならその原因はなにか?などを確認する

*2:プロットの例はこの本にたくさん紹介されています。

*3:尊敬するデータサイエンティストの方は、たくさん実験を回すためにBIツールを使っていました。pythonやRに固執しがちですが、本質はいかにデータを深く理解するか?なのでドラッグ&ドロップで数多く実験できるならば使わない手はないとのことです。