使用saveRDS的glmmTMB模型尺寸

问题描述

使用glmmTMB进行建模会生成建模对象,这些对象由于保存到RDS后的大小而变得难以使用。

为lm对象建议的另一个线程,这个问题是由保存这些对象时似乎伴随的环境属性引起的,但是这些建模对象的结构当然是不同的。
saveRDS inflating size of object

更新: 在进行更多挖掘时,我发现this thread似乎在其中saveRDS refhook参数可能有助于防止将环境写入对象,但是我不理解该参数的工作方式或结构refhook函数

这是一个小的可复制示例,演示了将对象保存到RDS后如何增长(约100 kb)。但是,在更大的模型中,我运行的大小从2 MB膨胀到1 GB以上。

# data frame from dput
DF <- structure(list(loc = c("300","300","301","302","303","304","305","307","308","309","310","312","313","315","317","318","319"),num_pts = c(100L,100L,100L),n = c(0,1,5,7,4,2,15,8,10,6,14,9,16,2),yr = structure(c(27L,28L,29L,30L,31L,32L,27L,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,149.208333333333,136.025,150.125,169.375,156.891666666667,148.716666666667,150.533333333333,155.2,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

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)