我使用软件包"dotwhisker“中的函数"dwplot”来绘制一些LSDV模型的回归系数。这是我的模型:
coefisubv <- lm(subv ~ Preelectoral + Electoral + Postelectoral +
factor(ccaa)-1, data = datos)然后,我将其转换为dataframe,以便删除不需要的因子(Ccaa)-1变量:
coefisubv <- as.data.frame(coefisubv)之后,我想翻转轴的顺序,所以我使用函数coord_flip()。然后,我还想用vars_order()命令改变X轴中变量的顺序。
dwplot(coefisubv,
vars_order = c("Postelectoral", "Electoral", "Preelectoral")) +
coord_flip()最后,我想添加一条使用geom_line()将图中的系数点链接起来的线
dwplot(coefisubv,
vars_order = c("Postelectoral", "Electoral", "Preelectoral")) +
coord_flip() +
geom_line(aes(Estimate, term), group=1)其结果是:

不幸的是,正如您所看到的,geom_line()函数似乎没有认识到变量的顺序发生了变化,因此它认为变量“选举前”是变量“选举后”,而“选举后”是“选举前”。我怎么才能解决这个问题?
发布于 2022-04-22 01:09:48
当我想做一些有点复杂的事情时,我通常会发现用broom::tidy + ggplot2手工构建系数图比较容易。在这种情况下,例如。
library(tidyverse)
library(broom)
m1 <- lm(mpg ~ hp + disp + drat + factor(cyl) - 1, mtcars)
tt <- (tidy(m1, conf.int = TRUE)
## drop unwanted terms
%>% filter(!stringr::str_detect(term, "cyl"))
## determine term ordering (alphabetical is default)
%>% mutate(across(term, ~ factor(., levels = c("hp", "disp", "drat"))))
)
gg1 <- (ggplot(tt)
+ aes(x=term, y=estimate, ymin = conf.low, ymax = conf.high)
+ geom_pointrange(colour = "red")
+ geom_line(aes(group = 1))
)place
aes(group = 1)
coord_flip(),因为我们设置了在geom_line()中的第一个coefficients中所需的方向,确保我们是连接点,即使x轴变量是一个因子
purrr::map_dfr是很棒的(如果您需要标准化coefficients
,则可以使用purrr::map_dfr来命名模型列表并使用dotwhisker::by_2sd )。
https://stackoverflow.com/questions/71957766
复制相似问题