2015-01-04 5 views
1

DiD 모델의 각 변수/조합의 중요성을 시각화하려고합니다.의미에 따른 플롯 계수

attach(mtcars) 
M=lm(mpg ~ hp + wt * gear , data =mtcars) 
summary(M) 

coef(M) 
confint(M, level = 0.9) 

따라서 바코드를 생성하여 (대부분의) 중요한 계수를 정렬 된 순서로 나열하고 싶습니다. summary(M) 명령은 계수와 해당 유의성 코드를 나열합니다. 중요도가 높은 코드 (***)가있는 각 계수는 먼저 음표로 읽은 다음 ** 및 그 다음에 *로 표시해야합니다. 점과 ''는 포함하면 안됩니다.

먼저, 어떻게 각 계수의 해당 유의성 코드/값을 얻을 수 있습니까? 그리고 중요도에 따라 계수를 포함/제외 할 수 있습니까?

+2

'COEF (요약 (M))' – jlhoward

답변

5

이 질문에 대답하기 전에 나는 그 전제의 일부에 질문하고 싶다. 나는 이것을 이 아니라이 아니라면, 한쪽 또는 다른 임계 값에 따라 효과를 분리 (trichotomize) 할 수 있다고 주장 할 것입니다. 정말로 이것을해야한다면, 채색을 제안합니다 (아래 그림 참조). , ...하지 suppose that the difference between 'significant' and 'not significant' is statistically significant

## never attach if you can help it! attach(mtcars) 
M <- lm(mpg ~ hp + wt * gear , data=mtcars) 

coef(summary(M))

우리가 작업 할 것 인 계수 테이블을 꺼내서 제발, 제발하십시오. 우리는 또한 편의를 위해 그것을 재 배열 :

efftab <- function(model) { 
    ss <- coef(summary(model)) 
    ss <- data.frame(var=rownames(ss),ss, 
      stringsAsFactors=FALSE) ## add variable names 
    rownames(ss) <- NULL ## cosmetic 
    ss <- ss[-1,] ## generally makes sense to drop the intercept 
    names(ss)[5] <- "pval" ## rename 
    ## p-value categories 
    ss$pval_cat <- cut(ss$pval,c(0,0.001,0.01,0.05,0.1,1), 
       labels=c("***","**","*",".","_")) 
    ss <- ss[order(ss$pval),] ## order by p-value 
    ss 
} 

그것을 밖으로 시도 : 우리는 변수를 표준화 경우

enter image description here

print(ss <- efftab(M),digits=3) 
##  var Estimate Std..Error t.value pval pval_cat 
## 2  hp -0.0335 0.00962 -3.486 0.00169  ** 
## 4 gear 5.3656 2.44437 2.195 0.03693  * 
## 5 wt:gear -1.4791 0.78439 -1.886 0.07013  . 
## 3  wt 1.7814 2.76202 0.645 0.52439  _ 


library("plotrix") 
colvec <- c("red","orange","blue","gray","white") 

par(las=1,bty="l") 
with(ss,plotCI(1:4,Estimate,1.96*Std..Error,pch=23,cex=3, 
     pt.bg=colvec[pval_cat],axes=FALSE,xlab="",ylab="estimate")) 
axis(side=2) 
axis(side=1,at=1:4,ss$var) 
abline(h=0,lty=2) 
그러나이 더 나을 (2010 방법 Schielzeth 참조 Ecology and Evolution), 계수의 크기 차이는 효과 크기와 변수가 m 인 경우의 혼동보다는 실제로 효과의 차이를 나타냅니다 에 easured : 예를 들어,

scdat <- mtcars 
vars <- c("mpg","hp","wt","gear") 
scdat[vars] <- scale(as.matrix(scdat[vars]),center=FALSE) 
M2 <- update(M,data=scdat) 
ss2 <- efftab(M2) 
with(ss2,plotCI(1:4,Estimate,1.96*Std..Error,pch=23,cex=3, 
     pt.bg=colvec[pval_cat],axes=FALSE,xlab="",ylab="estimate")) 
axis(side=2) 
axis(side=1,at=1:4,ss$var) 
abline(h=0,lty=2) 

  • 당신은 주 효과와 상호 작용 측면을 비교 조심해야합니까 있지만 wt:gear 상호 작용 (gear로 MPG에서 동일한 효과를 가지고 - 다른 잠재적 깡통을 웜의 경우), gear에 대해서는 0., wt:gear에 대해서는 0.05 이상일지라도.
  • hpmpg작은 효과가있다 (아니면 wt의하지-거의-큰 영향 묶여)는 작은 p 값이있는 경우에도,.

enter image description here

+1

뛰어난 답 벤! 프로그래밍 및 데이터 분석에 대한 훌륭한 조언. – eipi10

+0

와우! 고마워요! 나는 그것이 예상 이상으로 생각한다. 생각해 봐야겠다. 질문이 있으면 여기에서 의견을 말할 것이다. 고마워요! – Stefan