我使用bam
来自的函数在多个数据集上拟合相同的广义加法模型mgcv
。而对于我的大多数数据集,拟合在 10 到 20 分钟之间的合理时间内完成。对于一些数据集,运行需要 10 多个小时才能完成。我找不到慢案例之间的任何相似之处,最终的拟合既不是特别好也不是特别差,也不包含任何明显的异常值。
我如何才能弄清楚为什么这些实例的拟合速度如此之慢?我怎样才能加快这些速度?
我的模型包含两个平滑项(使用循环三次样条基础)和一些额外的数值和因子变量。总共估计了 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
)
节年包含 26 节。
这个模型在大多数情况下收敛得相当快,但在少数情况下却慢得令人难以置信。