0

我试图找到一种不那么复杂的方法来从aov对象中提取数据。假设我有一个a如下所示的数据集,并且我根据数据运行了方差分析,得到了一个名为a.model. 我试图通过使用来定位数据str(a.model),但一直无法找到它们。因为我知道如何从lm对象中提取数据,所以我所做的就是使用lm(a.model)$model$score,这很有效。但是是否可以在a.model不先将对象转换为aov对象的情况下直接从中提取数据lm?- 我想这更多是出于好奇,因为转换的“额外”步骤并没有那么多工作。

a=data.frame(factor1 = rep(letters[1:2], each=10), 
             factor2 = rep(letters[c(1,2,1,2)], each=5), 
             score=sort(rlnorm(20)))
a.model = aov(score~factor1*factor2, data=a)
4

1 回答 1

1

来自的输出aov还有一个名为的组件model,其中包含数据,即。a.model$model$score与 相同lm(a.model)$model$score

功能names很有用:

> names(a.model)
 [1] "coefficients"  "residuals"    
 [3] "effects"       "rank"         
 [5] "fitted.values" "assign"       
 [7] "qr"            "df.residual"  
 [9] "contrasts"     "xlevels"      
[11] "call"          "terms"        
[13] "model"

另一种可能更方便且适用于更一般情况的方法是使用函数model.matrixmodel.frame给出设计矩阵和公式中使用的整个模型。在您的第二个示例中(在评论中),您可以使用它model.frame来获取数据。

于 2013-02-26T20:25:56.877 回答