使用MCMCglmm
R中的程序包运行混合效果模型时出现性能问题。代码如下:
MC1<-MCMCglmm(bull~1,random=~school,data=dt,family="categorical"
, prior=list(R=list(V=1,fix=1), G=list(G1=list(V=1, nu=0)))
, slice=T, nitt=iter, ,burnin=burn, verbose=F)
数据中大约有20,000个观测值,它们聚集在大约200所学校中。在运行之前,我从数据框中删除了所有未使用的变量,并从内存中删除了所有其他对象。我的问题是,除非将迭代次数减少到无法接受的程度,否则运行时间将非常长。经过50,000次迭代,需要5个小时,而且我要运行许多不同的模型。所以我想知道是否有加速代码执行的方法,或者我可以使用其他软件包。我正在使用,MCMCglmm
因为我想要随机效果的置信区间。
另一方面,我希望在今年晚些时候购买一台新PC,但运气好的话,我也许可以将其推广,所以我一直在想如何最好地在新硬件上花有限的钱-更多的RAM ,更快的CPU等。通过观察任务管理器,我不认为RAM是问题(它永远不会超过物理使用的50%),但是CPU使用率也不会超过50%,这让我感到奇怪。我当前的设置是Intel Core i5 2.66GHz,4GB RAM,7200rpm HDD。以尽可能多的RAM为代价,获取尽可能快的CPU是否合理?我还想知道3级CPU缓存大小对像这样的统计计算问题的影响吗?
更新:已经问的元SO我一直建议重新措辞上的超级用户的问题和岗位。为此,我需要提供有关MCMCglmm中“幕后工作”的详细信息。我是否认为大部分的计算时间都花在了优化上,这是对的吗?我的意思是找到一些复杂函数的最大值?矩阵求逆和/或其他线性代数运算是否也是可能引起瓶颈的常见运算?我将非常感激能够提供给超级用户社区的任何其他信息。
lmer()
模型拟合到大型数据集可能需要花费相当长的时间,特别是如果您需要多次进行。尽管其他用户(例如@DirkEddelbuettel)将比我有更多帮助,但是您的问题的答案可能在于并行计算。也有可能在stackoverflow上获得更好的答案。
glmer
(正如您从其他帖子中所知道的),这大约需要20秒,但是问题是它没有给出置信区间或标准错误,而且从我在邮件列表存档中看到的内容来看,lme4
包说,随机效应的抽样分布可能会非常偏斜,因此不会报告这些统计数据。实际上MCMCglmm
,到目前为止,我发现它们对我来说已经接近正常了(这并不是很有帮助-我只是说)。如果我要求将其迁移到SO会更好吗?