Утраченные доверительные интервалы чрезмерно узки в qqplot2 - PullRequest
1 голос
/ 21 сентября 2019

У меня возникли проблемы с пониманием того, как доверительные интервалы вычисляются в ggplot2 при использовании сглаживания LOESS.Насколько я понимаю из нескольких других потоков, ggplot2 использует t-интервалы, рассчитанные на основе стандартных ошибок регрессии, т. Е. Используя расстояние между фактическими точками данных и линией LOESS.Но я думаю, что я должен ошибаться, основываясь на доверительных интервалах, которые дает ggplot2.Вот пример кода (на самом деле qplot в этом случае, но я думаю, что результат должен быть таким же):

qplot(Year, Purposivism, data=fig1.dat, geom=c('point', 'smooth'), level=0.99, span=0.5, method='loess', ylab="Term Frequency per Million Words") +
theme_bw() +
theme(text=element_text(family="Century", size=12)) +
expand_limits(y = 0) +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
theme(axis.text.x = element_text(angle = 45, hjust=1))

Вот результирующий график:

Graph

В левой части графика (скажем, 1920-1940) точки плотно упакованы вокруг линии МЕНЬШЕ и в основном находятся внутри доверительных интервалов.Но примерно с 1960-1980 гг. Они повсюду, но ширина доверительного интервала кажется примерно одинаковой.Я думаю, что я, должно быть, неправильно понимаю, как работают CI, потому что это кажется не интуитивным.

Заранее спасибо за вашу помощь!Очень рад предоставить любую другую информацию, которая может быть полезна.

1 Ответ

0 голосов
/ 21 сентября 2019

Вероятно, вы запутались в разнице между доверием и интервалом прогнозирования.Доверительные интервалы, которые используются в geom_smooth, являются прогнозируемой достоверностью в оценочном среднем значении.Это мера отклонения среднего значения ваших наблюдений от точечной оценки.В predict.lm есть возможность добавить interval = "prediction", что даст вам интервал прогнозирования.Интервал прогнозирования включает неопределенность в члене ошибки от y ~ x %*% beta + epsilon, в то время как доверительный интервал включает только неопределенность фиксированного эффекта от y ~ x %*% beta.Я не рассматривал интервалы прогнозирования для loess кривых и других непараметрических и полупараметрических сглаживателей, но, похоже, он не реализован в ?predict.loess

. Мы можем проиллюстрировать, как geom_smooth оцениваетдоверительные интервалы при ручном расчете.Начнем с самого скучного воспроизводимого примера.mtcars из пакета stats (входит в базу R).

data(mtcars)
fit <- loess(mpg ~ hp, data = mtcars)
preds <- predict(fit, se = TRUE)
names(preds)
#[1] "fit"            "se.fit"         "residual.scale" "df" 

Для вычисления доверительного интервала мы используем стандартную формулу, как вы правильно указали.

T <- qt(p = 0.975, df = preds$df)
lwr <- preds$fit - T * preds$se.fit
upr <- preds$fit + T * preds$se.fit

Чтобы создать правильный график доверительного интервала, я объединяю всю необходимую информацию в один data.frame, упорядочивая ввод, чтобы обеспечить правильный порядок строк.

ord <- order(mtcars$hp)
plotData <- data.frame(lwr = lwr[ord], 
                       upr = upr[ord], 
                       fit = preds$fit[ord], 
                       hp = mtcars$hp[ord], 
                       mpg = mtcars$mpg[ord])

Последнее, но не менее важное, мы простонужно создать график и сравнить его с произведенным ggplot2

p1 <- ggplot(plotData, aes(x = hp, ymax = upr, ymin = lwr)) + 
    #Data points
    geom_point(aes(y = mpg)) + 
    #Line from prediction
    geom_line(aes(y = fit)) + 
    #Points from prediction
    geom_point(aes(y = fit)) + 
    #Confidence interval
    geom_ribbon(alpha = 0.3, col = "thistle1") + 
    labs(title = "manual")
p2 <- ggplot(mtcars, aes(x = hp, y = mpg)) + 
    geom_point() + 
    geom_smooth() + 
    labs(title = "ggplot2")
#Merge plots
library(gridExtra)
grid.arrange(p1, p2, ncol = 1)

Теперь для вывода: Image of loess smoother produced by the described code

За исключением некоторого сглаживаниясделанный ggplot, и добавленные точки для подобранных значений это легко увидеть, чтобы быть идентичными.

Надеюсь, это прояснит, как рассчитывается доверительный интервал очков.

...