R、 RAM数量,以及避免内存错误的特定限制

R、 RAM数量,以及避免内存错误的特定限制,r,memory,memory-management,R,Memory,Memory Management,我已经阅读了关于R的各种大数据包。许多似乎都是可行的,但至少就我所理解的问题而言,我喜欢用于通用模型的许多包无法与推荐的大数据包一起使用(例如,我使用lme4、VGAM和其他相当常见的回归分析软件包,这些软件包似乎不能很好地处理各种大数据包,如ff等) 最近,我尝试使用VGAM,利用一般社会调查的数据建立多相合模型。当我将一些模型投入运行时,这些模型解释了几年来受访者的聚集情况以及一系列其他控件,我开始思考整个“无法分配大小向量yadda yadda…”我尝试过各种推荐的方法,例如清除内存和尽可

我已经阅读了关于R的各种大数据包。许多似乎都是可行的,但至少就我所理解的问题而言,我喜欢用于通用模型的许多包无法与推荐的大数据包一起使用(例如,我使用lme4、VGAM和其他相当常见的回归分析软件包,这些软件包似乎不能很好地处理各种大数据包,如ff等)

最近,我尝试使用VGAM,利用一般社会调查的数据建立多相合模型。当我将一些模型投入运行时,这些模型解释了几年来受访者的聚集情况以及一系列其他控件,我开始思考整个“无法分配大小向量yadda yadda…”我尝试过各种推荐的方法,例如清除内存和尽可能使用矩阵,但效果不好。我倾向于增加我机器上的RAM(实际上只是买一台RAM更多的新机器),但我想知道这是否能解决我的问题,然后再花1500美元买一台新机器,特别是因为这是我个人使用的,并且完全由我在研究生预算中出资

目前,我正在运行一台带有16GB RAM、R 3.0.2的Windows 8计算机,并且我使用的所有软件包都已更新到最新版本。我通常使用的数据集最多不超过100000个个案/受访者。就分析而言,如果我使用15个变量,我可能需要具有多行的矩阵和/或数据帧有多个层次的因素之间的相互作用,或者如果我需要为我的100000个案例中的每一个案例在矩阵中有多行,根据每一类的每一个受访者的DV形成一行。这对一些社会科学工作来说可能有点大,但我觉得在总体方案中,我的要求实际上不是所有的就数据分析而言,这是非常重要的。我相信许多R用户会对更大的数据进行更深入的分析

所以,我想我的问题是——考虑到我通常使用的数据大小和分析类型,什么样的RAM才能避免内存错误和/或必须使用特殊的软件包来处理我正在运行的数据/进程的大小?例如,我正在盯着一台运行32GB RAM的机器。这能解决问题吗?嘘我应该咬紧牙关,还是真的需要咬紧牙关,开始学习用大数据包来使用R,或者只是找一个不同的统计软件包,或者学习一种更为强大的编程语言(甚至不确定会是什么,Python,C++?)。从长远来看,后一种选择当然不错,但目前对我来说太难了。我正在进行一些项目,遇到了类似的问题,没有时间在最后期限内共同培养新的语言技能


尽可能具体地说,在一台具有16GB、32GB和64GB RAM的好机器上,64位R的最大容量是多少?我四处搜索,没有找到明确的答案,我当时无法用它来衡量我的个人需求。

一般的经验法则是,R大约需要RAM中数据集大小的三倍才能工作y、 这是由R中的对象复制引起的。因此,将RAM大小除以三,以粗略估计最大数据集大小。然后,您可以查看所使用的数据类型,并选择所需的RAM大小


当然,R也可以在内存之外处理数据,请参阅。这可能也很有趣。

不过,通常由某些回归函数创建的矩阵所需的内存大小可能会增加二次或(更多)更糟糕的是,数据量和预测器的数量。你可以用Amazon EC2实例测试你的实际内存需求。只需一句简短的评论:至少在原则上,
lme4
不应该过分强调100000个观察值的问题。
MEMSS
包中的
InstEval
示例有73K个观察值,
lme4
在非特别大的笔记本电脑上运行良好:(另一方面,您的固定效果模型稍微复杂一些………如果您需要使用
lme
corARMA
结构,您可以非常快地填充RAM(您需要多少RAM实际上取决于您的建模。model.matrix可能会消耗相当多的RAM,这取决于您有多少因子级别。如果您进行聚类-这取决于距离矩阵有多大。一般来说,您应该了解统计模型背后的计算技术,以了解您的RAM需求。谢谢对于辅助功能。我一直在研究Amazon EC2,它似乎很有希望。我没有想到跳到那里去运行一些东西来检查内存需求,但这将是在构建新机器之前衡量事物的一个很好的方法。我也注意到,在一些模型上,我可以很好地运行该模型,但当我开始运行额外的代码以获取结果时从模型(比如coefs等)构建自定义格式的表,输出到.csv(与不使用R的同事共享)。我遇到了内存问题,需要在操作之前进行一些清理。