绘制系数取决于它们的重要性

Ste*_*fan 1 r linear-regression

我试图想象DiD模型的每个变量/组合的重要性.

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

coef(M)
confint(M, level = 0.9)
Run Code Online (Sandbox Code Playgroud)

因此,我想创建一个条形图,以按排序顺序列出(大多数)重要系数.该summary(M)命令列出系数和相应的重要代码.具有高显着性代码(***)的每个系数应首先被监听,然后是**然后是*.点和''不应包括在内.

因此,首先,我如何获得每个系数的相应重要性代码/值.如何根据重要性包含/排除系数?

Ben*_*ker 5

在回答这个问题之前,我想对其前提部分提出疑问.我认为最好不要根据它们是否落在常规阈值的一侧或另一侧来分类(三分法)效果 - 如果你真的需要这样做,我建议着色(如下所示).请,请不要认为"重大"和"不重要"之间的差异在统计上是显着的 ......

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

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
}
Run Code Online (Sandbox Code Playgroud)

试试看:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

然而,如果我们对变量进行标准化(参见Schielzeth 2010 生态学与进化方法),这将更有意义,因此系数大小的差异实际上代表了效果的差异,而不是效果大小和变量单位之间的混淆.测量:

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)
Run Code Online (Sandbox Code Playgroud)

例如,

  • 这种wt:gear相互作用对mpg 的作用大致相同gear(尽管你需要小心比较相互作用项与主效应 - 另一种潜在的蠕虫效应),即使p <0.05 gear和p> 0.05 wt:gear.
  • hp即使它具有最小的p值,也具有最小的影响mpg(或者可能与非近似显着的影响相关联wt).

在此输入图像描述