lm
オブジェクトをかなり削除することは可能ですが、完全に削除することはできません。 (より原理的なアプローチは異なる行に沿ってstargazer
を再構築することですが、それはもっと多くの作業です)特に、コンポーネントのいくつかに関連する残差と行/列名を取り除くことは、大いに役立ちます単一の数値プレディクタが存在する上の例で最も大きな影響を与えます;より大きなプレディクタセットがあれば、それはずっと少なくなります)。 stargazer
が働くために必要とする最大の残りの成分は、QR行列と適合した値です。モデルのコンポーネントのサイズを探索するための
set.seed(101)
dd <- data.frame(y=rnorm(1e5),x1=rnorm(1e5),x2=rnorm(1e5),x3=rnorm(1e5))
reg1=lm(y~x1,data=dd)
reg2=lm(y~x2,data=dd)
reg3=lm(y~x3,data=dd)
ユーティリティ関数:
例を生成
inspect <- function(x=reg1) {
sapply(x,function(z) round(as.numeric(object.size(z))/2^20,2))
}
s <- function(x) cat(format(object.size(x),units="Mb"),"\n")
はそれらを試してみてください:
s(reg1) ## 24.4 Mb
inspect(reg1)
## coefficients residuals effects rank fitted.values
## 0.00 6.87 1.53 0.00 6.87
## assign qr df.residual xlevels call
## 0.00 7.63 0.00 0.00 0.00
## terms model
## 0.00 1.53
機能をコンポーネントを削除します:
strip_lm <- function(x) {
x$residuals <- NULL
x$model <- NULL
x$effects <- NULL
names(x$fitted.values) <- NULL
dimnames(x$qr$qr) <- NULL
return(x)
}
それを試してみてください。この場合
reg1B <- strip_lm(reg1)
s(reg1B)
##2.3 Mb
inspect(reg1B)
## coefficients rank fitted.values assign qr
## 0.00 0.00 0.76 0.00 1.53
## df.residual xlevels call terms
## 0.00 0.00 0.00 0.00
を、残された唯一の大型部品は当てはめ値とQR分解、両方のstargazer
ニーズがありますが、名前を削除することは多くのスペースを保存しています。名前を削除する(すなわちX行列だけ長く、広くない)の予測がたくさんある場合はほぼ同じくらいの助けにはなりません...
確認我々はそれが必要と何も削除していないにするためにstargazer
を試してみてください:
を
library(stargazer)
res <- capture.output(stargazer(reg1B,reg2,reg3,
title="Results", align=TRUE,type = "html",
style = "qje", out="Table1.html"))
'lm()'の 'model = FALSE'引数を試してみてください。 –
[broom :: 'package](https://cran.r-project.org/web/packages/broom/vignettes/broom.html)をチェックアウトしてください。どのように複雑なモデルを扱うのかは分かりませんが、 'lm()'に適合する線形モデルから係数を抽出するだけであれば、そのトリックができます。 – lefft
@benbolker、model = FALSEを追加しても問題は解決しません。オブジェクトはまだ巨大です。 – Allen