2013-02-26 1 views
0

aov 개체에서 데이터를 추출하는 데 덜 복잡하고 복잡한 방법을 찾으려고합니다. 아래 그림과 같이 데이터 집합 a이 있다고 가정하고 데이터를 기반으로 ANOVA를 실행하여 a.model이라는 개체가 생성되었습니다. str(a.model)을 사용하여 데이터를 찾으려고 시도했지만 찾을 수 없습니다. lm 개체에서 데이터를 추출하는 방법을 알기 때문에, 내가 한 것은 lm(a.model)$model$score을 사용하고있었습니다. 그러나 aov 개체를 lm 개체로 먼저 변환하지 않고 a.model에서 데이터를 직접 추출 할 수 있습니까? - 전환의 '추가'단계가 그다지 많은 작업이 아니기 때문에 이것은 무엇보다 호기심에서 벗어난 것 같습니다. aov에서데이터를 기반으로하는 ANOVA 개체에서 데이터 추출 R

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) 

답변

1

출력은 즉, 데이터를 포함 model라는 구성 요소가 있습니다. a.model$model$scorelm(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" 

아마도 더 convienient이며 더 일반적인 경우에 작동하는 또 다른 방법은, 기능 model.matrix 및 종로 매트릭스 식에 사용되는 전체 모델을 제공 model.frame을 사용하는 것이다. 두 번째 예제 (주석)에서는 model.frame을 사용하여 데이터를 가져올 수 있습니다.

+0

모델이 반복적으로 측정 되든 상관 없습니까? 반복되는 측정 값이기 때문에'names() '의 결과가 다릅니다. (문자 [1 : 2], 각 = 40), factor2 = rep (문자 [c (1,2,1,2)], 각 = 20), id = rep (스코어 ~ factor1 * factor2 + 에러 (id/(factor1)), 스코어 (스코어), 애트리뷰트 (애트리뷰트), 애트리뷰트, 애트리뷰트, 애트리뷰트, 애트리뷰트, 애트리뷰트, * factor2)), data = a) names (a.model)' – Alex

+0

수식에 Error 함수를 사용하면 아포 작동이 다르게됩니다. 나는 나의 대답을 업데이트했다. –