2012-05-17 3 views
4

표 하단에 분산 분석 유의 수준을 숨기고, 그 결과는 다음과 같습니다 방법 : (내가 좋아하는 것 한다고 가정 내가 <code>anova()</code>를 사용하여 중첩 임의 효과의 두 가지 모델을 비교

new.model: new 
current.model: new 
       Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)  
new.model  8 299196 299259 -149590        
current.model 9 299083 299154 -149533 115.19  1 < 2.2e-16 *** 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

은 테이블의 일부를 사용하는 아래 참조) :

   Df AIC BIC logLik Chisq Chi Df Pr(>Chisq)  
new.model  8 299196 299259 -149590        
current.model 9 299083 299154 -149533 115.19  1 < 2.2e-16 *** 

을 나는 특성 (anova.object) $ 제목 = NULL을 사용하여 null로 제목을 설정하여 (타격 참조) 제목 부분을 제거 할 수 있어요 알고 있지만, 그렇게하지 바닥 부분을 없애는 방법을 알아라 : Signif. 코드 : .....

new.model: new 
current.model: new 

나는 결정적으로 그것이 너희들이 알고 궁금 수 NAs

data.frame(anova(new.model, current.model)) 
       Df  AIC  BIC logLik Chisq Chi.Df Pr..Chisq. 
new.model  8 299196.4 299258.9 -149590.2  NA  NA   NA 
current.model 9 299083.2 299153.6 -149532.6 115.1851  1 7.168247e-27 

에 빈 셀 변경으로 data.frame (아래 참조)을 사용하지 않으려는 이 상황을 다루는 방법.

[UPDATE] I는 print.anova를 사용 래퍼를 작성 끝났다

anova.print = function(object, signif.stars = TRUE, heading = TRUE){ 
    if(!heading) 
     attributes(object)$heading = NULL 
    print.anova(object, signif.stars = signif.stars) 
} 

예 :

dv = c(rnorm(20), rnorm(20, mean=2), rnorm(20)) 
iv = factor(rep(letters[1:3], each=20)) 
anova.object = anova(lm(dv~iv)) 

Analysis of Variance Table 
Response: dv 
      Df Sum Sq Mean Sq F value Pr(>F)  
iv   2 46.360 23.1798 29.534 1.578e-09 *** 
Residuals 57 44.737 0.7849      
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 


anova.print(anova.object, F, F) 
      Df Sum Sq Mean Sq F value Pr(>F) 
iv   2 46.360 23.1798 29.534 1.578e-09 
Residuals 57 44.737 0.7849    
+3

'옵션 (show.signif.stars = FALSE)'도움이 되는가를? (우리가 재현 할 수있는 예제를 줄 수 있다면 좋을 것입니다 ...) –

+0

@Ben 이것은 작동하지만 전체적인 변경이 필요합니다. 시그 (SIG) 스타가 절대 원하지 않는다면 이것은 갈 길입니다. –

답변

3

다른 요일에는 NAs를 표시하지 않는 것과 비슷한 게시물이있었습니다. 당신은 할 수 :

x <- as.matrix(anova(new.model, current.model)) 
print(x, na.print="", quote=FALSE) 

더 재현 예를 mtcars 데이터 세트를 사용 :

x <- as.matrix(anova(lm(hp~mpg+am, data=mtcars))) 
print(x, na.print="", quote=FALSE) 
+0

고마워요! 나는 실제로 다른 질문을 올렸다! 나는 실제적인 ANOVA 산출물을 사용하는 것이 다른 접근법을 필요로한다고 생각했기 때문에이 중복 된 게시물에 대해 사과드립니다.이 게시물을 게시하기 전에 다른 게시물의 솔루션을 사용해 보았습니다. 다시 감사합니다! – Alex

+0

X. DWin의 솔루션을 살펴 봅니다. 그것은 훨씬 낫다; 내장 및 적은 작업. 나는이 방법이 표제를 돌보고 하나의 시그 (SIG) 별이 급히 떨어 졌다고 생각합니다. –

10

EDIT : anova는 파라미터

같은 signif.stars와 인쇄 방법을 가지고
anova(new.model, current.model, signif.stars=FALSE) 

> x <- anova(lm(hp~mpg+am, data=mtcars)) 
> print(x, signif.stars=F) 
Analysis of Variance Table 

Response: hp 
      Df Sum Sq Mean Sq F value Pr(>F) 
mpg  1 87791 87791 54.5403 3.888e-08 
am   1 11255 11255 6.9924 0.01307 
Residuals 29 46680 1610  
+1

당신은 단지 범례도 삭제할 수 있습니다 :'print (x, signif.legend = FALSE)' – Aaron

+0

몰랐습니다. 그게 내 대답보다 낫다. +1 –

+0

@ 애론 이들은 정말 간단합니다. 나는 데이터를 처리하기 위해 사용할 스크립트를 단순화하려고 노력해왔다. 그래서이 팁들은 정말 편리 할 것입니다. – Alex