Чтобы добавить к уже существующим ответам, полоса представляет доверительный интервал среднего, но из вашего вопроса вы явно ищете интервал прогнозирования . Интервалы прогнозирования - это диапазон, который, если вы нарисовали одну новую точку, теоретически эта точка будет содержаться в диапазоне X% времени (где вы можете установить уровень X).
library(ggplot2)
set.seed(5)
x <- rnorm(100)
y <- 0.5*x + rt(100,1)
MyD <- data.frame(cbind(x,y))
Мы можем сгенерировать тот же тип графика, который вы показали в своем первоначальном вопросе, с доверительным интервалом вокруг среднего значения сглаженной линии регрессии Лесса (по умолчанию это 95% доверительный интервал).
ConfiMean <- ggplot(data = MyD, aes(x,y)) + geom_point() + geom_smooth()
ConfiMean
Для быстрого и грязного примера интервалов прогнозирования здесь я генерирую интервал прогнозирования, используя линейную регрессию со сглаживающими сплайнами (так что это не обязательно прямая линия). С примерами данных это довольно неплохо: для 100 точек только 4 находятся за пределами диапазона (и я указал 90% -ный интервал в функции прогнозирования).
#Now getting prediction intervals from lm using smoothing splines
library(splines)
MyMod <- lm(y ~ ns(x,4), MyD)
MyPreds <- data.frame(predict(MyMod, interval="predict", level = 0.90))
PredInt <- ggplot(data = MyD, aes(x,y)) + geom_point() +
geom_ribbon(data=MyPreds, aes(x=fit,ymin=lwr, ymax=upr), alpha=0.5)
PredInt
Теперь еще несколько заметок. Я согласен с Ладиславом в том, что вам следует рассмотреть методы прогнозирования временных рядов, поскольку у вас есть регулярные ряды, начиная с какого-то 2007 года, и из вашего графика ясно, что если вы внимательно посмотрите, есть сезонность (соединение точек сделало бы это более ясным). Для этого я хотел бы предложить проверить на forecast.stl функцию в прогнозном пакете , где вы можете выбрать сезонное окно и обеспечивает надежное разложение сезонности и тенденции , используя лесс. Я упоминаю надежные методы, потому что ваши данные имеют несколько заметных всплесков.
В более общем случае для данных, не относящихся к временным рядам, я бы рассмотрел другие надежные методы, если у вас есть данные со случайными выбросами. Я не знаю, как генерировать интервалы прогнозирования, используя Лесс напрямую, но вы можете рассмотреть квантильную регрессию (в зависимости от того, насколько экстремальными должны быть интервалы прогнозирования). В противном случае, если вы просто хотите, чтобы размер был потенциально нелинейным, вы можете рассмотреть сплайны, чтобы функция могла изменяться в зависимости от x.