Почему моделирование в R потребляет больше памяти, чем возвращаемый объект

При выполнении анализа выживаемости в R сообщается, что подгонка модели потребляет больше памяти, чем фактический возвращаемый объект. Более того, это, кажется, случается только несколько раз, не для каждого случая.

require(survival)
require(pryr)
require(tidyverse)

dat <- tibble(
  x = sample(letters[1:2], 1e5, replace = TRUE),
  x2 = sample(LETTERS[1:2], 1e5, replace = TRUE),
  e = sample(0:1, 1e5, replace = TRUE),
  t = rweibull(1e5, shape = 1)
)

mem_change(fit <- survfit(formula = Surv(t, e) ~ x, data = dat))
mem_change(fit2 <- survfit(formula = Surv(t, e) ~ x, data = dat))
mem_change(fit3 <- survfit(formula = Surv(t, e) ~ 1, data = dat))
mem_change(fit4 <- survfit(formula = Surv(t, e) ~ x2, data = dat))
mem_change(fit5 <- survfit(formula = Surv(t, e) ~ x + x2, data = dat))

map(list(fit, fit2, fit3, fit4, fit5), object_size)
object_size(fit, fit2, fit3, fit4, fit5)

В случае fit а также fit5, pryr::mem_change() сообщит об изменении ~ 7,5 МБ, в то время как каждый fitX объект имеет 6,4 МБ, как сообщили pryr::object_size(), Есть ли скрытые переменные, созданные в другом месте, или это как-то связано с реализацией C под капотом survfit?

Изменить: я знаю, что сам процесс моделирования может временно потреблять больше памяти. Тем не мение, pryr::mem_change() предполагается, что он возвращает чистое изменение в использованной памяти после того, как все вычисления были завершены, и все временные объекты были отброшены.

0 ответов

Другие вопросы по тегам