Rcpparmadillo:将fastLM对象转换为'lm'类型

时间:2014-07-19 18:40:17

标签: r rcpp

首先感谢这样一个不错的套餐。我想在fastLM的输出上运行anova,但是anova只接受类型为'lm'的对象。有没有办法将fastLM对象转换为< lm'宾语?

谢谢, 小号

1 个答案:

答案 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分析,我可以考虑一个写得很好的补丁。