【R stan】ベイズモデル その2:個体差を取り込んだモデル [データサイエンス、統計モデル]
【R stan】ベイズモデル その1:シンプルな線形回帰モデル
https://skellington.blog.ss-blog.jp/2020-04-20
↑
こちらの続き
前回のmodel1は、個体差を考慮しない線形回帰モデル。
ベイズ(MCMC)を使っていますが、通常のlm(線形回帰モデル)と同じでした。
model2とmodel3ですが、どちらも個体差(RETAILER_ID)を取り込んだモデルとなっています。
model2_aとmodel2_bはやっていることはほぼ同じですが、model2_bの方が少しだけ計算が早いです。
model2ですが、個体差を考慮してはいるものの、メカニズムを考慮していません。
階層ベイズモデルではないです。
model3では、RETAILER_IDに共通のメカニズムを考慮した階層ベイズモデルとなっています。
精度比較です。
model 1: ベイズモデル:個体差なしの線形回帰モデル
RMSE: 6377
MAE: 2818
model 2a: 個体差を考慮した線形回帰モデル
RMSE: 3502
MAE: 943
model 2b: 個体差を考慮した線形回帰モデル b
RMSE: 3500
MAE: 942
model 3: 階層ベイズ線形モデル
RMSE: 3637
MAE: 970
model2とmodel3は、model1に比べて劇的に精度が向上しています。
model2とmodel3は、あまり変わりませんでした。
その原因ですが、cheeseのデータですが、各RETAILERのサンプルサイズがかなり大きいです。
なので、共通のメカニズムを考えなくでも、個別のRETAILERごとに線形回帰モデルを作っても十分な精度が出ている。
かりに、サンプルサイズが数件しかないようなデータであった場合、model2で作ってしまうとオーバーフィットしてしまう可能性があり、model3のような書き方をする方が良いかと思います。
https://skellington.blog.ss-blog.jp/2020-04-20
↑
こちらの続き
前回のmodel1は、個体差を考慮しない線形回帰モデル。
ベイズ(MCMC)を使っていますが、通常のlm(線形回帰モデル)と同じでした。
model2とmodel3ですが、どちらも個体差(RETAILER_ID)を取り込んだモデルとなっています。
model2_aとmodel2_bはやっていることはほぼ同じですが、model2_bの方が少しだけ計算が早いです。
model2ですが、個体差を考慮してはいるものの、メカニズムを考慮していません。
階層ベイズモデルではないです。
model3では、RETAILER_IDに共通のメカニズムを考慮した階層ベイズモデルとなっています。
精度比較です。
model 1: ベイズモデル:個体差なしの線形回帰モデル
RMSE: 6377
MAE: 2818
model 2a: 個体差を考慮した線形回帰モデル
RMSE: 3502
MAE: 943
model 2b: 個体差を考慮した線形回帰モデル b
RMSE: 3500
MAE: 942
model 3: 階層ベイズ線形モデル
RMSE: 3637
MAE: 970
model2とmodel3は、model1に比べて劇的に精度が向上しています。
model2とmodel3は、あまり変わりませんでした。
その原因ですが、cheeseのデータですが、各RETAILERのサンプルサイズがかなり大きいです。
なので、共通のメカニズムを考えなくでも、個別のRETAILERごとに線形回帰モデルを作っても十分な精度が出ている。
かりに、サンプルサイズが数件しかないようなデータであった場合、model2で作ってしまうとオーバーフィットしてしまう可能性があり、model3のような書き方をする方が良いかと思います。