R语言 如何使用plot_summs & plot_coefs从回归系数图中删除因子变量?

yzuktlbb  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(190)

我使用jtools包中的plot_summs()plot_coefs()来绘制回归系数。
然而,我想从我的图中删除一些系数,但当我这样做时:

plot_coefs(mod1,
           omit.coefs = c("(Intercept)", "Maritalstatus", "numberofkids",
                          "age2", "education"))

它只删除了数字变量,如age2和numberofkids,但它没有删除其他变量(factors变量)。为什么?

bfrts1fy

bfrts1fy1#

这是一个名为make_tidies的函数中的变量名称冲突,该函数特定于jtools
让我们先做一个可重复的例子。
这给了我们一个小的 Dataframe ,它包含了你的变量,N = 20。

df <- data.frame(numberofkids = sample(c(0,1,2), 20, replace = T),
             education = factor(sample(c("HS","C","G"), 20, replace = T)),
             age2 = runif(20,20,60),
             LastVariableStanding <- rnorm(20),
             Maritalstatus = factor(sample(c("S","M","D"), 20, replace = T)),
             outcome <- runif(20,0,1))

names(df) <- c("numberofkids","education","age2","LastVariableStanding","Maritalstatus", "outcome")

mod1 <- lm(outcome ~ Maritalstatus + education + age2 + 
                               LastVariableStanding + numberofkids, data = df)

所以如果我们拟合mod1,然后使用

plot_coefs(mod1, omit.coefs = c("(Intercept)", "Maritalstatus", 
                               "numberofkids", "age2", "education")),

我们应该只在LastVariableStanding上得到回归。
相反,我得到了这个:

就像你描述的那样。
函数make_tidies()plot_coefs中调用。它做了很多工作来从回归模型中提取参数,以便将值传递回plot_coefs
make_tidies()的深处,你会看到这样一个表:

# A tibble: 8 × 8
  term                 estimate std.error statistic p.value conf.low conf.high model  
                                              
1 (Intercept)           0.971     0.282       3.45  0.00481   0.358    1.58    Model 1
2 MaritalstatusM       -0.0296    0.174      -0.170 0.868    -0.409    0.349   Model 1
3 MaritalstatusS       -0.0163    0.146      -0.111 0.913    -0.334    0.302   Model 1
4 educationG           -0.216     0.192      -1.12  0.283    -0.635    0.203   Model 1
5 educationHS          -0.123     0.185      -0.663 0.520    -0.527    0.281   Model 1
6 age2                 -0.00779   0.00565    -1.38  0.193    -0.0201   0.00452 Model 1
7 LastVariableStanding -0.0913    0.0684     -1.34  0.207    -0.240    0.0577  Model 1
8 numberofkids         -0.0954    0.106      -0.900 0.386    -0.326    0.136   Model 1

省略变量的检查有一个选项

tidies$term %nin% omit.coefs

这将踢出连续变量,因为它们的名称没有改变,但将包括因子水平,因为它们的名称由于lm而改变(我认为)。显式地,Maritalstatus != MaritalstatusS,等等。
尝试使用mod1变量名而不是omit.coefs中的data.frame列名。

plot_coefs(mod1, omit.coefs = c("(Intercept)", "MaritalstatusS", 
         "MaritalstatusM",  "numberofkids", "age2", "educationG", "educationHS"))

我得到了一个LastVariableStanding的图形,我想你想要的。

相关问题