У меня есть этот код, который отображает стандартизированные коэффициенты, а не доверительные интервалы. Как я могу показать CI вместо этого? Некоторые примеры, которые я видел, немного отличаются от графика
library(nycflights13)
library(dplyr)
library(dotwhisker)
library(MASS)
flights <- nycflights13::flights
flights<- sample_n (flights, 500)
m1<- glm(formula = arr_delay ~ dep_time + origin+ air_time+ distance , data = flights)
#m1<- glm(formula = arr_delay ~ . , data = flights)
m1<- stepAIC(m1)
p<- dotwhisker::dwplot(m1)
z<- p +
geom_vline(xintercept=0, linetype = "dashed")+
geom_segment(aes(x=conf.low,y=term,xend=conf.high,
yend=term,col=p.value<0.05)) +
geom_point(aes(x=estimate,y=term,col=p.value<0.05)) +
xlab("standardized coefficient") +
ylab("coefficient") +
ggtitle("coefficients in the model and significance")
print(z)
Я думаю, вы могли бы получить то, что ищете, прямо из модели, не используя dotwhisker
. Проблема в том, что, поскольку они не стандартизированы, необработанные доверительные интервалы разнятся на порядки и плохо отображаются на одном графике.
df1 <- as.data.frame(coefficients(summary(m1)))
df1$variable <- rownames(df1)
df1$lower <- df1$Estimate - 1.96 * df1$`Std. Error`
df1$upper <- df1$Estimate + 1.96 * df1$`Std. Error`
ggplot(df1, aes(Estimate, variable, color = `Pr(>|t|)` < 0.05)) +
geom_segment(aes(yend = variable, x = lower, xend = upper)) +
geom_point() +
geom_vline(xintercept = 0, lty = 2)
хм.. может быть, я должен получить таблицу с 95% ДИ и оставить доверчивость как есть
Я бы использовал интервалы профиля (help("confint")
) или интервалы начальной загрузки.
Кроме того, если вы делаете пошаговую регрессию, это влияет на всю статистику (включая доверительные интервалы). Следует избегать ступенчатой регрессии.
Спасибо за все комментарии. Этот сюжет хорош, но, возможно, я могу добавить к нему несколько ярлыков. Я пытаюсь выбрать между точным и легко читаемым. действительно, автоматическая пошаговая регрессия — трудоемкий процесс.
@AllanCameron Как я могу добавить эти CI в качестве метки на графике? Как вы думаете, это хорошая идея?
dotwhisker
принимает аргумент by_2sd
, который стандартизирует коэффициенты и доверительные интервалы; установка его на FALSE
дает нестандартные коэффициенты. Так как многих смутило такое поведение, самая последняя версия пакета (0.6) делает это по умолчанию.
Вы пробовали с
geom_segment(aes(x=estimate-conf.low,y=term,xend=estimate+conf.high, yend=term,col=p.value<0.05))