【发布时间】:2014-02-15 14:13:01
【问题描述】:
我已经阅读了有关 R 的各种大数据包。许多似乎可行,但至少在我理解这个问题的情况下,我喜欢用于常见模型的许多包不能与推荐的大数据一起使用包(例如,我使用 lme4、VGAM 和其他相当常见的回归分析包,这些包似乎与 ff 等各种大数据包不太兼容)。
我最近尝试使用 VGAM 来使用来自 General Social Survey 的数据进行多分模型。当我运行一些模型来解释多年来受访者的聚类以及其他控件列表时,我开始点击整个“无法分配大小 yadda yadda 的向量......”我尝试了各种推荐的项目,例如作为清除内存并在可能的情况下使用矩阵没有好的效果。我倾向于增加我机器上的 RAM(实际上只是购买一台具有更多 RAM 的新机器),但我想知道这是否能解决我的问题,然后再放弃 1500 美元购买一台新机器,特别是因为这是我个人使用的,将完全由我的研究生预算资助。
目前我正在运行一台具有 16GB RAM、R 3.0.2 的 Windows 8 机器,并且我使用的所有软件包都已更新到最新版本。我通常使用的数据集最多不超过 100,000 个个案/受访者。就分析而言,我可能需要具有多行的矩阵和/或数据框,例如,如果我使用 15 个变量与具有多个级别的因子之间的交互,或者如果我需要在矩阵中为我的 100,000 中的每一个设置多行案例基于每个受访者每个类别的某些 DV 的每个类别排成一行。对于一些社会科学工作来说,这可能有点大,但我觉得从宏观上看,就数据分析而言,我的要求实际上并没有那么高。我敢肯定,许多 R 用户会对更大的数据进行更深入的分析。
所以,我想我的问题是——考虑到我通常使用的数据大小和分析类型,为了避免内存错误和/或必须使用特殊包来处理我正在运行的数据/进程的大小?例如,我正在关注一台运行 32GB RAM 的机器。那会剪掉吗?我应该选择 64GB RAM 吗?或者我真的需要咬紧牙关,可以这么说,开始学习将 R 与大数据包一起使用,或者只是找到一个不同的 stats 包或学习一种更强大的编程语言(甚至不确定那会是什么,Python, C++ ??)。从长远来看,后一种选择当然会很好,但目前对我来说是相当禁止的。我在几个项目中处于中间阶段,我遇到了类似的问题,没有时间在截止日期前一起建立新的语言技能。
尽可能具体 - 在具有 16GB、32GB 和 64GB RAM 的好机器上,64 位 R 的最大容量是多少?我四处搜索,但没有找到可以用来衡量我个人需求的明确答案。
【问题讨论】:
-
您可以使用 Amazon EC2 实例测试您的实际内存需求。
-
简短评论:至少在原则上,
lme4不应过分强调 100,000 次观察的问题。MEMSS包中的InstEval示例有 73K 观察值,lme4在非特别大的笔记本电脑上运行良好:github.com/lme4/lme4/issues/150(另一方面,您的固定效应模型有点复杂...... ) -
... 如果你需要使用
lme和corARMA结构,你可以快速填满你的 RAM。 :( -
您需要多少 RAM 取决于您的模型。 model.matrix 可能会消耗相当多的 RAM,具体取决于您拥有多少因子级别。如果您进行聚类 - 这取决于距离矩阵有多大。一般来说 - 您应该了解统计模型背后的计算技术以了解您的 RAM 要求。
-
感谢您的帮助。我一直在研究 Amazon EC2,它似乎很有希望。我没有想过要跳到那里并运行一些东西来检查内存需求,但这将是在构建新机器之前衡量事物的好方法。我还注意到在某些模型上我可以很好地运行模型,但是当我开始运行其他代码以从模型中获取结果(比如 coefs 等)并构建自定义格式的表格以输出到 .csv(共享与不使用 R 的同事一起)我在那里遇到了内存问题,需要在操作之前进行一些清理。
标签: r memory memory-management