Если вы преобразуете вывод confint
во фрейм данных, вы можете напрямую отобразить вывод в ggplot2. Вот подход (использующий пример glht
из файла справки), который использует функцию tidy
из broom
для преобразования вывода confint()
во фрейм данных, подходящий для построения графика:
library(multcomp)
library(tidyverse)
library(broom)
lmod <- lm(Fertility ~ ., data = swiss)
m = glht(lmod, linfct = c("Agriculture = 0",
"Examination = 0",
"Education = 0",
"Catholic = 0",
"Infant.Mortality = 0"))
confint(m) %>%
tidy %>%
ggplot(aes(lhs, y=estimate, ymin=conf.low, ymax=conf.high)) +
geom_hline(yintercept=0, linetype="11", colour="grey60") +
geom_errorbar(width=0.1) +
geom_point() +
coord_flip() +
theme_classic()
ОБНОВЛЕНИЕ: В ответ на комментарий ...
Кривые концы для доверительных интервалов
Я не уверен, что можно легко добавить изогнутые концы к панелям ошибок, так как вы можете приблизиться, используя geom_segment
и стрелки с небольшим углом стрелки.
confint(m) %>%
tidy %>%
ggplot(aes(x=lhs, y=estimate)) +
geom_hline(yintercept=0, linetype="11", colour="grey60") +
geom_segment(aes(xend=lhs, y=conf.low, yend=conf.high), size=0.4,
arrow=arrow(ends="both", length=unit(0.05, "inches"), angle=70)) +
geom_point() +
coord_flip() +
theme_classic()
lhs
заказ
С точки зрения упорядочения, lhs
будет упорядочено в алфавитном порядке, если оно не преобразовано в коэффициент с определенным порядком. Например, ниже мы упорядочиваем по значению estimate
.
confint(m) %>%
tidy %>%
arrange(estimate) %>%
mutate(lhs = factor(lhs, levels=unique(lhs))) %>% # unique() returns values in the order they first appear in the data
ggplot(aes(x=lhs, y=estimate)) +
geom_hline(yintercept=0, linetype="11", colour="grey60") +
geom_segment(aes(xend=lhs, y=conf.low, yend=conf.high), size=0.4,
arrow=arrow(ends="both", length=unit(0.05, "inches"), angle=70)) +
geom_point() +
coord_flip() +
theme_classic()