Часто вам может понадобиться построить прогнозные значения модели регрессии в R, чтобы визуализировать различия между прогнозируемыми значениями и фактическими значениями.
В этом руководстве представлены примеры того, как создать этот тип графика в базе R и ggplot2.
Пример 1: График предсказанных и фактических значений в базе R
В следующем коде показано, как подобрать модель множественной линейной регрессии в R, а затем создать график прогнозируемых и фактических значений:
#create data
df <- data.frame(x1=c(3, 4, 4, 5, 5, 6, 7, 8, 11, 12),
x2=c(6, 6, 7, 7, 8, 9, 11, 13, 14, 14),
y=c(22, 24, 24, 25, 25, 27, 29, 31, 32, 36))
#fit multiple linear regression model
model <- lm(y ~ x1 + x2, data=df)
#plot predicted vs. actual values
plot(x=predict(model), y=df$y,
xlab='Predicted Values',
ylab='Actual Values',
main='Predicted vs. Actual Values')
#add diagonal line for estimated regression line
abline(a= 0 , b= 1 )
По оси X отображаются прогнозируемые значения из модели, а по оси Y — фактические значения из набора данных. Диагональная линия в середине графика — предполагаемая линия регрессии.
Поскольку каждая из точек данных находится довольно близко к оценочной линии регрессии, это говорит нам о том, что модель регрессии довольно хорошо справляется с подгонкой данных.
Мы также можем создать фрейм данных, который показывает фактические и прогнозируемые значения для каждой точки данных:
#create data frame of actual and predicted values
values <- data.frame(actual=df$y, predicted=predict(model))
#view data frame
values
actual predicted
1 22 22.54878
2 24 23.56707
3 24 23.96341
4 25 24.98171
5 25 25.37805
6 27 26.79268
7 29 28.60366
8 31 30.41463
9 32 33.86585
10 36 34.88415
Пример 2: График прогнозируемых и фактических значений в ggplot2
В следующем коде показано, как создать график прогнозируемых и фактических значений с помощью пакета визуализации данных ggplot2 :
library (ggplot2)
#create data
df <- data.frame(x1=c(3, 4, 4, 5, 5, 6, 7, 8, 11, 12),
x2=c(6, 6, 7, 7, 8, 9, 11, 13, 14, 14),
y=c(22, 24, 24, 25, 25, 27, 29, 31, 32, 36))
#fit multiple linear regression model
model <- lm(y ~ x1 + x2, data=df)
#plot predicted vs. actual values
ggplot(df, aes (x=predict(model), y=y)) +
geom_point() +
geom_abline(intercept= 0 , slope= 1 ) +
labs(x='Predicted Values', y='Actual Values', title='Predicted vs. Actual Values')
Еще раз, ось x отображает прогнозируемые значения из модели, а ось y отображает фактические значения из набора данных.
Дополнительные ресурсы
Как создать остаточный график в R
Как создать гистограмму остатков в R
Как рассчитать стандартизованные остатки в R