2011-11-01 2 views
10

У меня есть некоторые данные, скажем, (на самом деле, у меня есть большое количество данных):создания доверия области для нормально распределенной рассеивания в ggplot2 и R

x y 
0.1 0.267 
0.2 0.254 
0.3 0.182 
0.4 0.173 
0.5 0.121 
0.6 0.089 
0.7 0.070 
0.8 0.056 
0.9 0.031 

Эти данные примерно следует кривой тренда, что я сюжет с ggplot stat_smooth(). stat_smooth создает серое пространство, на котором 95% уверены, что линия тренда попадет внутрь.

То, что я хочу сделать, это создать серое пространство вокруг, где будет линия тренда, - создать серое пространство вокруг, где точки данных будут падать с доверием 95%, предполагая нормальное распределение вокруг линии тренда.

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

Спасибо.

ответ

20

То, что вы ищете, по существу, называется интервалом прогнозирования. Вот один из способов сделать это в ggplot2

library(ggplot2) 

# RUN REGRESSION AND APPEND PREDICTION INTERVALS 
lm_fit = lm(total_bill ~ tip, data = tips) 
tips_with_pred = data.frame(tips, predict(lm_fit, interval = 'prediction')) 

# PLOT WITH REGRESSION LINE, CONFIDENCE INTERVAL AND PREDICTION INTERVAL 
p0 <- ggplot(tips_with_pred, aes(x = tip, y = total_bill)) + 
    geom_point() + 
    geom_smooth(method = 'lm', aes(fill = 'confidence'), alpha = 0.5) + 
    geom_ribbon(aes(y = fit, ymin = lwr, ymax = upr, fill = 'prediction'), 
    alpha = 0.2) + 
    scale_fill_manual('Interval', values = c('green', 'blue')) + 
    opts(legend.position = c(0.20, 0.85)) 

enter image description here

+0

интересные данные ... Есть много щедрых людей. Я думал, что ось x и y должна быть отменена, нет? – yosukesabai

+0

есть. я просто быстро вымотал что-то, чтобы проиллюстрировать конструкцию этих двух интервалов. – Ramnath

+3

Красивые. Я думаю, что это пост, который, наконец, убедил меня пристегнуть голову и изучить третью графическую систему «R». –

 Смежные вопросы

  • Нет связанных вопросов^_^