如何在没有数据或仅预测系数的情况下保存glm结果?

时间:2012-11-14 21:26:28

标签: r prediction glm

当我使用以下R代码时,

model_glm=glm(V1~. , data=xx,family="binomial");
save(file="modelfile",model_glm);

modelfile的大小与数据一样多,在我的情况下为1gig。如何删除model_glm结果中的数据部分,因此我只能保存一个小文件。

4 个答案:

答案 0 :(得分:9)

在致电model = FALSE时设置glm可能会阻止model.frame被退回。同时设置y = FALSE将阻止返回响应向量。 <{1}}是默认设置,可防止返回x = FALSE

此组合应缩小glm对象的大小。

当然,您也可以使用model.matrix或标准错误

提取系数
coef(model_glm)

答案 1 :(得分:6)

我遇到过这个问题,我在生产过程中将GLM作为R的一部分运行,GLM的大小大大减慢了我的速度。我发现我需要杀死的不只是$dataHere是我的帖子,下面是一个例子。

> object.size(sg)
96499472 bytes
> sg$residuals <- NULL
> sg$weights <- NULL
> sg$fitted.values <- NULL
> sg$prior.weights <- NULL
> sg$na.action<- NULL
> sg$linear.predictors <- NULL
> sg$fitted.values <- NULL
> sg$effects <-NULL
> sg$data <- NULL
> object.size(sg)
3483976 bytes
> sg$qr$qr <- NULL
> object.size(sg)
79736 bytes

答案 2 :(得分:1)

object.size()具有误导性,因为它忽略了环境属性。 如果要评估真实大小,请使用:

length(serialize(model_glm, NULL))

除了存储的数据外,如果你想显着减小你的glm的大小:

rm(list=ls(envir = attr(model_glm$terms, ".Environment")),
     envir = attr(model_glm$terms,
              ".Environment"))

这来自详细的article

答案 3 :(得分:0)

您可以在保存之前将模型对象中的数据设为NULL。我做了一个快速测试,仍然产生了预测。

model_glm$data <- NULL