【发布时间】:2016-01-20 04:27:57
【问题描述】:
我正在进行的项目的一部分是确定residuals。我正在执行此操作linear models。
不幸的是,我发现的软件包要么不符合要求,要么出现故障。
我已尝试在我的项目中使用以下软件包。
-
lm-R中的标准线性建模函数- + 专业人士 -- 无
- - cons -- 使用标准统计库,单核,无法处理内存不足计算
-
fastLm-RcppArmadillopackage 的一部分- + pro's -- 多核
- - 缺点 -- 无法处理内存不足的计算。
-
biglm-biglmpackage 的一部分- + pro's -- 特别设计用于通过将数据拆分成块来处理内存不足的计算
- - 缺点 -- 单核
-
speedlm-speedglmpackage 的一部分- + pro's -- 多核,应该能够通过将数据分成块来处理内存不足的计算
我个人在使用speedlm 时遇到了一些问题,否则这将是首选包:
-
当列包含 non-numeric data 时,
updateWithMoreData似乎失败了 - 缺点 -- 没有默认方法来检索the residuals.
在谷歌搜索没有成功后,我使用以下代码试图找到新的包,尝试不同的关键字,但我似乎根本找不到任何合适的包。
find <- findFn("linear model lm", sortby="function", maxPages = 10)
format(find)
除了我上面提到的之外,还有没有满足以下要求的线性模型包:
- 能够使用多个 CPU 计算线性模型
- 能够拆分数据集和
update具有数据集块的线性模型 - 获取拟合值
【问题讨论】:
-
@投反对票的人,你介意告诉我如何改进这个问题吗?
-
H2O 有一个可以处理这个问题的 GLM。但这不在 R 中,尽管您可以从 R 中运行所有内容。
-
你不能。这是题外话。当然,您的优点/缺点是非常主观的。例如,如果您有办法获得拟合值,则不需要
residuals方法。 -
@Roland 我已经编辑了优缺点。你是对的,如果我有办法获得拟合值,我不需要
residuals方法。 -
Revolution R 的版本(甚至是社区版本)使用多核、矢量化 SIMD (SSE/AVX) CPU 操作和可以处理更多可以放入内存的数据。
lm最终可能比任何其他选项都快得多,因为它使用矢量化操作。我看到svd命令的执行速度提高了 7 倍