【问题标题】:R boot package: not enough memory to get confidence intervalsR 引导包:没有足够的内存来获得置信区间
【发布时间】:2011-07-21 20:02:12
【问题描述】:

我在 R 中使用引导包运行了一个相当大的引导程序。

当我第一次运行 boot() 时,我得到了这个:

Error: cannot allocate vector of size 2.8 Gb

因此,为了获得引导对象,我必须使用“simple=TRUE”,它告诉 boot() 在开始时不要分配所有内存(根据 ?boot)。虽然花了几分钟,但效果很好。

现在我需要得到置信区间:

> boot.ci(vpe.bt, type="bca", simple=TRUE)
Error: cannot allocate vector of size 2.8 Gb

同样的问题!但根据 ?boot.ci,没有可以与此功能一起使用的“simple=TRUE”标志(我已经尝试过)。

那么,有没有办法使用 boot.ci() 来解决这个问题?

如果没有,我该怎么做才能增加它可以使用的内存量?

【问题讨论】:

  • 对不起,我应该提一下我在 Ubuntu 11.04 中运行它。
  • 您可以通过键入 memory.limit(4000) 来增加内存,例如,这会将 R 的内存增加到 4Gb。显然,您不能超过自己计算机的内存限制。至于你的错误,我不熟悉这个功能,但也许你做了太多的引导复制?当我尝试创建太大的矩阵时,我看到了这个错误。
  • 也许这应该放在 StackOverflow 中?问题是关于 R 编程而不是统计数据。
  • @Alan,据我从 R 代码中可以看出,这可能是在 boot.ci 中使用 type = "bca" 导致了大内存分配。我只是简单地看了一下,但尝试另一个 type 参数,看看你是否还有分配问题。
  • 您至少可以尝试debug(boot.ci),然后再试一次,看看问题出现在boot.ci 的确切位置。

标签: r statistics-bootstrap large-data


【解决方案1】:

在 R 中计算 bca(调整后的引导百分位数)置信区间需要创建一个“重要性数组”,其维度(观察次数)x(代表次数)。如果您没有足够的内存来处理此类矩阵的至少两个副本,则该函数将不起作用。

但是,基于正态的 (type='normal') 和基于百分位数的置信区间 (type='percent') 应该可以。

【讨论】:

  • 我相信至少在启动版本 1.3-20 中是 type = 'perc'(不是 'percent')。
【解决方案2】:

我不知道 boot.ci,但我在 32 位 Ubuntu 系统中遇到过类似的大型向量问题。 32 位系统的地址空间有限,在 64 位系统中可以解决。

64 位有一些缺点,主要是它仍然不是标准的,而且不是每个软件提供商都有他们软件的 64 位编译版本,Flash 播放器是我听说的最后一个只有 64 位的 beta 版本。这通常可以通过安装允许您在 64 位系统上运行 32 位软件的库来修正(尽管会降低性能)。

这些资源可能会进一步阐明这个问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多