如何更改 R 中系数图中系数的顺序(包 dotwhisker)
How to change the order of coefficients in a coefficient plot in R (package dotwhisker)
这是官方包文档中的一些示例代码。
#Package preload
library(dotwhisker)
library(broom)
library(dplyr)
# run a regression compatible with tidy
m1 <- lm(mpg ~ wt + cyl + disp + gear, data = mtcars)
m2 <- update(m1, . ~ . + hp) # add another predictor
m1_df <- tidy(m1) %>% filter(term != "(Intercept)") %>% mutate(model = "Model 1")
m2_df <- tidy(m2) %>% filter(term != "(Intercept)") %>% mutate(model = "Model 2")
two_models <- rbind(m1_df, m2_df)
dwplot(two_models)
产生这个:
图中最合乎逻辑的顺序是模型 1 的系数高于模型 2。无论如何,我想知道如何控制不同模型的系数顺序(而不是变量的顺序他们自己)。我尝试使用 order
对整洁的数据框进行排序或使用 factor
分解模型列。两者都不起作用。任何建议将是最受欢迎的。
您可以通过重新排序整齐的数据框来更改系数的顺序。一个可能的问题可能是图例顺序也发生了变化,但这也可以修复。
dwplot(arrange(two_models, desc(model))) +
scale_color_discrete(breaks=c("Model 1","Model 2"))
这是官方包文档中的一些示例代码。
#Package preload
library(dotwhisker)
library(broom)
library(dplyr)
# run a regression compatible with tidy
m1 <- lm(mpg ~ wt + cyl + disp + gear, data = mtcars)
m2 <- update(m1, . ~ . + hp) # add another predictor
m1_df <- tidy(m1) %>% filter(term != "(Intercept)") %>% mutate(model = "Model 1")
m2_df <- tidy(m2) %>% filter(term != "(Intercept)") %>% mutate(model = "Model 2")
two_models <- rbind(m1_df, m2_df)
dwplot(two_models)
产生这个:
图中最合乎逻辑的顺序是模型 1 的系数高于模型 2。无论如何,我想知道如何控制不同模型的系数顺序(而不是变量的顺序他们自己)。我尝试使用 order
对整洁的数据框进行排序或使用 factor
分解模型列。两者都不起作用。任何建议将是最受欢迎的。
您可以通过重新排序整齐的数据框来更改系数的顺序。一个可能的问题可能是图例顺序也发生了变化,但这也可以修复。
dwplot(arrange(two_models, desc(model))) +
scale_color_discrete(breaks=c("Model 1","Model 2"))