首先感谢这样一个不错的套餐。我想在fastLM的输出上运行anova,但是anova只接受类型为'lm'的对象。有没有办法将fastLM对象转换为< lm'宾语?
谢谢, 小号
答案 0 :(得分:1)
首先,fastLM()
存在以提供比lm()
更快的速度。
提高速度的一种方法是在返回的对象中提供比lm()
更少的信息:
R> object.size(fitlm <- lm(Girth ~ Volume + Height, data=trees))
22960 bytes
R> library(RcppArmadillo)
R> object.size(fitFastLm <- fastLm(Girth ~ Volume + Height, data=trees))
4264 bytes
R>
这表明对于树数据集中的(小的,平凡的)示例,我们返回4.2 kB而lm()
返回23kb。因此,我选择不将返回的对象子类化为类lm()
- 因为我们不包含完整的对象。
所以anova()
可能会失败。最简单的可能是分解实际的anova代码并提供合适的方法,因为我们提供了一些分析:
R> summary(fitFastLm <- fastLm(Girth ~ Volume + Height, data=trees))
Call:
fastLm.formula(formula = Girth ~ Volume + Height, data = trees)
Residuals:
Min. 1st Qu. Median 3rd Qu. Max.
-1.342900 -0.566960 -0.086282 0.802830 1.116400
Estimate StdErr t.value p.value
(Intercept) 10.81637 1.97320 5.482 7.45e-06 ***
Volume 0.19518 0.01096 17.816 < 2e-16 ***
Height -0.04548 0.02826 -1.609 0.119
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.79 on 28 degrees of freedom
Multiple R-squared: 0.941, Adjusted R-squared: 0.937
R>
如果你想在此基础上提供anova分析,我可以考虑一个写得很好的补丁。