Можно использовать уравнение регрессии для предсказаний. Для этого нам нужно просто подставить конкретное значение в уравнение. Например, мы можем захотеть узнать, какой размер IQ можно ожидать у человека с размером мозга 900000 пикселей. Мы представляем это значение в уравнения и получаем IQ 110, но правда ли, что у всех людей будет IQ 110, если у них на МРТ размер мозга 900000 пикселей. Нет, вряд ли, потому что люди отличаются друг от друга. Соответственно, у нас есть некоторая неопределенность, когда мы оцениваем по выборке значения параметров линейной регрессии, и значит должна быть какая-то неопределенность в предсказаниях, когда мы используем уравнение регрессии для предсказания. Собственно, неопределенность можно оценить двумя способами, можно получить групповые предсказания или предсказания на индивидуальном уровне. Что значит групповые предсказания? Это значит, что мы показываем предсказывает положение среднего значения в выборки. Если мы говорим об индивидуальных предсказаниях, мы предсказываем зону, в которую попадут 95% всех наблюдений в повторной выборке, то есть уже не среднего значения, а конкретных наблюдений. Естественно, что зона групповых предсказаний, она уже, чем зона предсказаний индивидуальных. В R можно получить предсказание и групповые и индивидуальные при помощи функции predict. Функция predict - это функция generic, на самом деле она скрывает под одной оберткой много разных функций. Функция predict смотрит к какому классу относится ее аргумент и выбирает подходящий метод работы с ним. Например, если мы ей дадим объект, который создан при помощи функции lm, она на самом деле вызовет функцию predict.lm со своими параметрами. Это функция уже умеет работать с линейными моделями и она нам даст предсказание, поэтому, если вы хотите посмотреть какие аргументы мы можем использовать в методе predict, вам нужно смотреть help именно к predict lm. Какие аргументы нам потребуется? Ну во-первых, конечно же первый аргумент, это модель, которую мы создали при помощи функции lm. Мы должны этой модели будем передать новые данные в формате датафрейма, хорошо бы ей указать, какой тип предсказаний мы хотим получить, групповые или индивидуальные. По умолчанию это будут групповые предсказания. И последний аргумент, который нам сейчас важен, это level, это вероятность, которая описывает ширину получившегося интервала. Давайте попробуем создать данные, которые мы будем использовать для предсказаний функции predict. Нам нужно будет вручную создать датафрейм при помощи конструктора data.frame, и в этом датафрейме будет единственная переменная. Дело в том, что если мы хотим использовать регрессию для предсказаний, в датафрейме обязательно должны содержаться все переменные, которые участвовали в построении модели. Здесь у нас одна переменная, и соответственно, в датафрейме будет тоже одна. Если мы хотим получить предсказание для одного наблюдения, в датафрейме будет всего одна строка. В данном случае там будет записано 900000. Если мы хотим получить групповые предсказания, то функцией predict можно сказать, а можно и не говорить, что interval = 'confidance'. По умолчанию параметр interval как раз принимает это значение. И по умолчанию уровень значимости, это 95%. Результаты работы функции predict, это предсказанное значение и нижняя и верхняя граница доверительного интервала. Таким образом мы узнаем, что у людей с размером мозга 900000 пикселей значение IQ в 95% повторных выборок будет заключаться вот в этом интервале. Чтобы получить индивидуальное предсказание при помощи функции predict, нам нужно изменить значение только одного аргумента, interval, мы задаем аргумент interval равный prediction. Предсказательный интервал, он шире, и значение IQ у всех людей с размером мозга 900000 пикселей будут с 95% вероятностью содержаться в этом интервале, от 67 до 153. Чтобы построить график, на котором мы одновременно изобразим линию зависимости и доверительные зоны предсказаний, доверительные зоны регрессий и точки исходных наблюдений, нам понадобится извлечь предсказание из результатов функции predict. Мы сохраним эти результаты в переменную brain_model, а чтобы нам в том же датафрейме были доступны исходные точки наблюдений, давайте мы их просто пришьем при помощи функции data.frame. Теперь у нас есть все данные для того, чтобы построить график. Давайте сначала посмотрим, как он должен выглядеть, что мы собственно будем изображать. Линии регрессии, доверительный интервал, зоны предсказаний и исходные точки наблюдений, это несколько слоев. Как это делается? Нам понадобится базовый слой ggplot, которому мы говорим, откуда брать данные и что мы будем изображать по осям. Это знакомая нам часть, а дальше мы будем рисовать послойно снизу вверх, как в Фотошопе со слоями работаем. Мы можем построить сначала самую широкую зону, доверительную зону предсказаний, и это будет такая лента, лента в ggplot, это geom_ribbon, и этому geom-у нужно передать две эстетики, которые будут описывать положение нижнего и верхнего края, эти эстетики называются ymin и ymax. Это нижняя и верхняя граница доверительного интервала. Можем сразу же назвать каким образом он будет называться в легенде. Если мы это сделаем в эстетике, то вот эти слова появятся в легенде к соответствующему цвету. Хорошо бы, чтобы этот слой был прозрачным, поэтому мы задаем прозрачность при помощи аргумента alpha. Следующий слой, вы помните, нам нужно нарисовать доверительную зону регрессии и линию. Это можно сделать одним махом, при помощи уже знакомого вам geom_smooth. Тут нет ничего сложного. Дальше хорошо бы, чтобы наш график был красиво раскрашен. Мы будем использовать цвет Санкт-Петербургского государственного университета, который используется на презентациях powderblue, а доверительная зона регрессии, она будет серого цвета. Настройки цветов делаются в scale_fill_manual, ручная шкала заливки. Дальше, последним слоем мы можем нанести исходное наблюдение при помощи geom_point. В geom_point нам необязательно указывать откуда брать данные, потому что мы уже еще раньше, в базовом слое говорили, что мы будем, какие переменные мы будем использовать в эстетиках X и Y. Последний штрих, это название осей и заголовок графика. Все, график наш готов. Можно на него любоваться и можно, соответственно, понять, где на самом деле находится значение предсказанное для группы наблюдений, и в какой зоне, в более широкой зоне могут находиться какие-то точки реальных наблюдений. Использование регрессий для предсказания, штука довольно сложная. Всегда есть соблазн использовать регрессию для предсказаний вне области ее определения. У нас, например, в нашем датасете нет людей, у которых размер мозга был больше, чем вот эта величина или меньше, чем вот эта величина. На самом деле предсказывать в этом диапазоне мы не можем, это называется диапазон экстраполяции. Будьте очень осторожны, когда пытаетесь экстраполировать значения, зависимости, которые вы подобрали. Гораздо лучше работать в диапазоне интерполяции. Мы строили зависимость, которая описывает величину IQ по данным в этом диапазоне, поэтому предсказывать по ним мы можем, наша модель уже как бы что-то знает об этом диапазоне.