glmmTMB型号大小(带saveRDS)
使用glmmTMB建模会生成建模对象,这些对象在保存到RDS后由于其大小而变得难以处理 为lm对象建议的另一个线程此问题源于保存这些对象时出现的环境属性,但当然这些建模对象的结构不同。glmmTMB型号大小(带saveRDS),r,glmmtmb,R,Glmmtmb,使用glmmTMB建模会生成建模对象,这些对象在保存到RDS后由于其大小而变得难以处理 为lm对象建议的另一个线程此问题源于保存这些对象时出现的环境属性,但当然这些建模对象的结构不同。 更新: 在进一步挖掘的过程中,我发现saveRDS refhook参数可能有助于防止将环境写入对象,但我不知道该参数是如何工作的,也不知道如何构造refhook函数 下面是一个小的可重复的示例,演示了对象在保存到RDS后是如何增长的(大约100KB)。然而,在更大的型号中,我运行的大小从2MB膨胀到超过1GB
更新: 在进一步挖掘的过程中,我发现saveRDS refhook参数可能有助于防止将环境写入对象,但我不知道该参数是如何工作的,也不知道如何构造refhook函数 下面是一个小的可重复的示例,演示了对象在保存到RDS后是如何增长的(大约100KB)。然而,在更大的型号中,我运行的大小从2MB膨胀到超过1GB
# data frame from dput
DF <- structure(list(loc = c("300", "300", "300", "300", "300", "300",
"301", "301", "301", "301", "301", "302", "302", "302", "302",
"302", "302", "303", "303", "304", "304", "304", "305", "305",
"307", "307", "308", "308", "309", "309", "310", "310", "312",
"313", "315", "317", "318", "319"), num_pts = c(100L, 100L, 100L,
100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L,
100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L,
100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L, 100L,
100L, 100L), n = c(0, 1, 1, 0, 5, 1, 7, 5, 4, 2, 15, 1, 0, 1,
5, 5, 8, 4, 2, 5, 10, 6, 14, 10, 9, 10, 7, 10, 0, 0, 14, 16,
0, 0, 6, 2, 10, 2), yr = structure(c(27L, 28L, 29L, 30L, 31L,
32L, 27L, 28L, 29L, 30L, 31L, 27L, 28L, 29L, 30L, 31L, 32L, 27L,
31L, 27L, 31L, 32L, 27L, 31L, 28L, 32L, 28L, 32L, 28L, 32L, 28L,
32L, 29L, 29L, 29L, 29L, 30L, 30L), .Label = c("1984", "1985",
"1986", "1987", "1988", "1990", "1993", "1994", "1995", "1996",
"1997", "1998", "1999", "2000", "2001", "2002", "2003", "2004",
"2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012",
"2013", "2014", "2015", "2016", "2017", "2018"), class = "factor"),
var = c(154.341666666667, 154.341666666667, 154.341666666667,
154.341666666667, 154.341666666667, 154.341666666667, 149.208333333333,
149.208333333333, 149.208333333333, 149.208333333333, 149.208333333333,
136.025, 136.025, 136.025, 136.025, 136.025, 136.025, 150.125,
150.125, 169.375, 169.375, 169.375, 156.891666666667, 156.891666666667,
148.716666666667, 148.716666666667, 150.533333333333, 150.533333333333,
155.2, 155.2, 150.033333333333, 150.033333333333, 152.275,
155.266666666667, 155.7, 149.358333333333, 146.925, 147.575
)), row.names = 1912:1949, class = "data.frame")
# form model
model <- as.formula("cbind(n, num_pts - n) ~ var + (1 | yr) + (1 | loc)")
# fit
fit <-
glmmTMB::glmmTMB(model,
family = "betabinomial",
data=DF)
pryr::object_size(fit) # 530kb
saveRDS(fit, "fit.rds")
fit2 <- readRDS("fit.rds")
pryr::object_size(fit2) # 640kb
来自dput的数据帧
我知道你说“我不能提供一个可复制的例子”,但为什么不呢?您能否编写一个代码示例来模拟与您的问题具有相似维度的数据,以演示这种现象<代码>库(glmmTMB);m1感谢@BenBolker添加了一个小示例,展示了对象如何膨胀。