Is there a way to 'compress' an lm() object for later prediction?

前端 未结 3 456
一整个雨季
一整个雨季 2020-12-06 11:45

Is there a way to \'compress\' an object of class lm, so that I can save it to the disk and load it up later for use with predict.lm?

I have an lm object that ends u

3条回答
  •  旧时难觅i
    2020-12-06 12:17

    A couple of things:

    1. This question really is a duplicate.

    2. In the narrow sense model=FALSE as was already answered in another question.

    3. In a wider sense, predict(fit, newdata) really just does a matrix-vector multiplication so you could save just the vector of predictions and multiply it with a matrix.

    4. There are alternate fitting functions. Below is an example from fastLm() in RcppArmadillo which also happens to be faster.

    See below for an illustration.

    R> library(RcppArmadillo)
    Loading required package: Rcpp
    R> flm <- fastLm(Volume ~ Girth, data=trees)
    R> predict(flm, newdata=trees[1:5,])             ## can predict as with lm()
    [1]  5.10315  6.62291  7.63608 16.24803 17.26120
    R> object.size(flm)                              ## tiny object size ...
    3608 bytes
    R> stdlm <- lm(Volume ~ Girth, data=trees)
    R> object.size(stdlm)                            ## ... compared to what lm() has
    20264 bytes
    R> stdlm <- lm(Volume ~ Girth, data=trees, model=FALSE)
    R> object.size(stdlm)                            ## ... even when model=FALSE
    15424 bytes
    R> 
    

提交回复
热议问题