【发布时间】:2021-08-26 13:45:18
【问题描述】:
我正在研究一个模型,该模型包含多个 RE 和一个变量的样条曲线,因此我尝试使用 gam()。但是,我遇到了内存耗尽限制错误(即使我在 128GB 的集群上运行它)。即使我只用一个 RE 运行最简单的模型,也会发生这种情况。当我改用lmer() 时,相同的模型(减去样条曲线)运行平稳,只需几秒钟(或完整模型的几分钟)。
我想知道是否有人知道为什么 gam() 和 lmer() 之间存在差异以及任何潜在的解决方案。
这是一些带有模拟数据和最简单模型的代码:
library(mgcv)
library(lme4)
set.seed(1234)
person_n <- 38000 # number of people (grouping variable)
n_j <- 15 # number of data points per person
B1 <- 3 # beta for the main predictor
n <- person_n * n_j
person_id <- gl(person_n, k = n_j) #creating the grouping variable
person_RE <- rep(rnorm(person_n), each = n_j) # creating the random errors
x <- rnorm(n) # creating x as a normal dist centered at 0 and sd = 1
error <- rnorm(n)
#putting it all together
y <- B1 * x + person_RE + error
dat <- data.frame(y, person_id, x)
m1 <- lmer(y ~ x + (1 | person_id), data = dat)
g1 <- gam(y ~ x + s(person_id, bs = "re"), method = "REML", data = dat)
m1 在我的电脑上运行只需几秒钟,而g1 出现错误:
错误:向量内存耗尽(达到限制?)
【问题讨论】:
标签: r lme4 mixed-models spline mgcv