我在mgcv
中使用bam
函數在多個數據集上擬合了相同的廣義相加模型。雖然對於我的大部分數據集合,合適的時間在10到20分鐘之內完成。對於少數數據集,運行需要超過10個小時才能完成。在緩慢的情況之間我找不到任何相似之處,最終的合適既不特別好也不壞,也不包含任何明顯的異常值。爲什麼mgcv中的bam對於某些數據很慢?
我怎樣才能弄清楚爲什麼這些情況下適合度太慢?我怎麼能夠加速這些?
我的模型包含兩個光滑項(使用循環三次樣條基)和一些附加的數值和因子變量。估計總共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海里。
該模型在大多數情況下收斂速度相當快,但對於少數情況下收斂速度非常慢。