R 如何保存glm结果而不使用数据或仅使用系数进行预测?

R 如何保存glm结果而不使用数据或仅使用系数进行预测?,r,prediction,glm,R,Prediction,Glm,当我使用下面的R代码时 model_glm=glm(V1~. , data=xx,family="binomial"); save(file="modelfile",model_glm); 模型文件的大小将与数据的大小一样大,在我的例子中是1gig。如何删除model_glm结果中的数据部分,这样我只能保存一个小文件 在调用glm时设置model=FALSE应防止返回model.frame。另外,设置y=FALSE将阻止返回响应向量x=FALSE是默认设置,可防止返回model.matrix

当我使用下面的R代码时

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

模型文件的大小将与数据的大小一样大,在我的例子中是1gig。如何删除model_glm结果中的数据部分,这样我只能保存一个小文件

在调用
glm
时设置
model=FALSE
应防止返回
model.frame
。另外,设置
y=FALSE将阻止返回响应向量
x=FALSE
是默认设置,可防止返回
model.matrix

此组合将缩小glm对象的大小

当然,您也可以使用
coef(model_glm)
提取系数,或者使用标准误差

summary(model_glm)$coef

可以在保存模型对象之前将其设为空。我做了一个快速测试,仍然做出了预测

model_glm$data <- NULL

model_glm$data我遇到了这样一个问题,我在生产中运行glm作为R的一部分,而glm的大小大大降低了我的速度。我发现我需要消除的不仅仅是
$data
。这是我的帖子,下面有一个例子

> 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
>对象大小(sg)
96499472字节
>sg$残差sg$权重sg$拟合。值sg$前期。权重sg$na。动作sg$线性。预测器sg$拟合。值sg$效果sg$数据对象。大小(sg)
3483976字节
>sg$qr$qr对象大小(sg)
79736字节
object.size()
具有误导性,因为它忽略了环境属性。 如果要评估真实尺寸,请使用:

length(serialize(model_glm, NULL))
除了存储的数据外,如果您想显著减小glm的大小,请执行以下操作:

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

这是因为在调用
glm
时设置了一个非常详细的集合
model=FALSE
,以防止model.frame返回。您查看了生成的模型了吗?它仍然很重:残差、拟合值和完整的qr矩阵。
biglm
包返回更轻的模型对象。是的,
bigglm
函数可能是一个可行的替代方法。如果你把答案贴出来,我会投你一票。尽管如此,在保存之前仍然可以从
glm
对象中仅选择所需的组件。只需一条注释。。。在你的博客中,你几乎看不到以黄色突出显示的内容。你也可以做一些类似于
sg[c(“残差”、“权重”、“拟合的值”)]@RichardScriven噢,天哪,这灼伤了我的眼睛。@RichardScriven谢谢,修复了,幸好我不在数据视图中。