R语言 为ggplot2绘图添加回归线
回归模型是基于独立变量的目标预测值。它主要用于找出变量之间的关系并进行预测。不同的回归模型基于以下几点而不同–因变量和自变量之间的关系,他们考虑的是自变量的数量。
理解事物的最好方法是可视化,我们可以通过在数据集中绘制回归线来实现回归的可视化。在大多数情况下,我们使用散点图来表示我们的数据集,并画出回归线来直观地显示回归的效果。
方法
在R编程语言中,很容易将事物可视化。绘制回归线的方法包括以下步骤::
- 创建数据集来绘制数据点
- 使用ggplot2库,用ggplot()函数绘制数据点。
- 使用 geom_point() 函数在散点图中绘制数据集
- 使用任何一个平滑化函数在数据集上画一条回归线,包括使用lm()函数计算截距和斜率。下面显示了各种平滑函数。
方法1:使用stat_smooth()
在R语言中,我们可以使用stat_smooth()函数来平滑视觉效果。
语法: stat_smooth(method=”method_name”, formula=fromula_to_be_used, geom=’ method name’)
参数
- method: 它是用于平滑线条的平滑方法(函数)。
- formula: 它是在平滑函数中使用的公式。
- geom: 它是用来显示数据的几何对象。
为了在stat_smooth()函数的帮助下在图形媒介上显示回归线,我们传递一个 方法 为 “lm “,使用的公式为 y ~ x . 而 geom 为 ‘smooth ‘ 。
# Create example data
rm(list = ls())
set.seed(87)
x <- rnorm(250)
y <- rnorm(250) + 2 *x
data <- data.frame(x, y)
# Print first rows of data
head(data)
# Install & load ggplot2
library("ggplot2")
# Create basic ggplot
# and Add regression line
ggp <- ggplot(data, aes(x, y)) +
geom_point()
ggp
ggp +
stat_smooth(method = "lm",
formula = y ~ x,
geom = "smooth")
输出
方法2:使用geom_smooth() 函数
在R语言中,我们可以使用geom_smooth()函数来表示回归线并使其平滑化。
语法: geom_smooth(method=”method_name”, formula=fromula_to_be_used)
参数
- method: 它是用于平滑线的平滑方法(函数)。
- formula: 它是平滑函数中使用的公式。
在这个例子中,我们使用的是波士顿数据集,其中包含来自一个名为MASS的软件包的房价数据。为了在geom_smooth()函数的帮助下在图形媒介上显示回归线,我们将方法 为 “loess “,所用公式为 y ~ x。
# importing essential libraries
library(dplyr)
# Load the data
data("Boston", package = "MASS")
# Split the data into training and test set
training.samples <- Boston$medv %>%
createDataPartition(p = 0.85, list = FALSE)
#Create train and test data
train.data <- Boston[training.samples, ]
test.data <- Boston[-training.samples, ]
# plotting the data
ggp<-ggplot(train.data, aes(lstat, medv) ) +
geom_point()
# adding the regression line to it
ggp+geom_smooth(method = "loess",
formula = y ~ x)
输出
方法3:使用geom_abline()
我们可以使用geom_abline()函数创建回归线。它使用的系数和截距是通过使用lm()函数进行线性回归计算出来的。
语法: geom_abline(intercept, slope, linetype, color, size)
参数
- intercept: 要绘制的直线的计算截距。
- slope: 要绘制的直线的斜率
- linetype: 指定要画的线的类型
- color: 要绘制的直线的颜色
- size : 表示直线的大小
截距和斜率可以通过lm()函数轻松计算出来,该函数用于线性回归,然后是coefficients()。
rm(list = ls())
# Install & load ggplot2
library("ggplot2")
set.seed(87)
# Create example data
x <- rnorm(250)
y <- rnorm(250) + 2 *x
data <- data.frame(x, y)
reg<-lm(formula = y ~ x,
data=data)
#get intercept and slope value
coeff<-coefficients(reg)
intercept<-coeff[1]
slope<- coeff[2]
# Create basic ggplot
ggp <- ggplot(data, aes(x, y)) +
geom_point()
# add the regression line
ggp+geom_abline(intercept = intercept, slope = slope, color="red",
linetype="dashed", size=1.5)+
ggtitle("geeksforgeeks")
输出