我正在尝试制作一个二项式 GAM。630 万行数据(因此是bam
)。我有两个随机效应(40 和 7 个级别)s(...,"re")
,使用 3 个分类变量(5 + 5 + 4 个级别)和一个循环平滑(s(Hour, by = GroupAB, bs = "cc")
)。GroupAB 有 25 个级别,是前面提到的两个变量之间的串联,我在平滑之外包括了这些变量之间的额外交互。类似的东西(y~s(..,"re") + s(..,"re") + s(Hour, by = GroupAB, "cc") + A * B + C, family ="binomial")
。
当我运行模型时,我收到以下错误消息:
Error in predict.gam(G, newdata = mf[ind, ], type = "lpmatrix", newdata.guaranteed = TRUE, :
number of items to replace is not a multiple of replacement length
我已经追踪到 bam 试图制作稀疏矩阵(sparse.matrix.model()
在https://github.com/cran/mgcv/blob/master/R/bam.r中)。看到它使用了 的chunk.size=
参数bam()
,我开始玩弄它。在将块大小从 10k 增加到 75K 后,我让模型运行并给出了合理的结果。
但为什么首先会出现错误?是否有避免此错误消息的技巧?还是和数据有关?