bam
関数を使用して複数のデータセットに同じ一般化加算モデルをフィッティングしています(mgcv
)。私のデータセットのほとんどは、合理的な時間内に10分から20分以内に完了します。いくつかのデータセットでは、実行には10時間以上かかります。私は遅いケース間で類似点を見つけることはできません。最終フィットは例外的に良いものも悪いものでもないし、顕著な異常値も含まれていません。いくつかのデータでmgcvのbamが遅いのはなぜですか?
このような場合、フィットが非常に遅いのはなぜわかりますか?そして、どうすればこれらのスピードを上げることができますか?
私のモデルには、2つの滑らかな項(周期的な3次スプライン基底を使用)といくつかの追加の数値と係数変数が含まれています。合計300の係数(滑らかな項の係数を含む)が推定される。フィッティングプロセスを高速化するために、情報の下に意図的に結び目の数を理論的に最適な数に保ちます。私のデータセットは約850kの行を含んでいます。
これは、関数呼び出しです:
bam(
value
~ 0
+ weekday_x
+ weekday
+ time
+ "a couple of factor variables encoding special events"
+ delta:weekday
+ s(share_of_year, k=length(knotsYear), bs="cc")
+ s(share_of_year_x, k=length(knotsYear), bs="cc")
, knots=list(
share_of_year=knotsYear
, share_of_year_x=knotsYear
)
, family=quasipoisson()
, data=data
)
knotsYearsは26ノットが含まれています。
このモデルは、ほとんどの場合はかなり高速に収束しますが、少数の場合は非常に遅くなります。