如何在 R 中使用 ggplot2 绘制平滑线?
在本文中,我们将学习如何使用 R 编程语言中的 ggplot2 绘制平滑线。
我们将使用“ USArrests ”数据集作为本文的示例数据集。
Murder Assault UrbanPop Rape
Alabama 13.2 236 58 21.2
Alaska 10.0 263 48 44.5
Arizona 8.1 294 80 31.0
Arkansas 8.8 190 50 19.5
California 9.0 276 91 40.6
Colorado 7.9 204 78 38.7
让我们首先绘制回归线。
句法:
geom_smooth(method=lm)
我们已经使用geom_smooth ()函数通过提供“ method=lm ”作为参数来向散点图添加回归线。我们将method=lm设置为lm代表线性模型,它绘制了一条线性回归线。
但是我们可以在下面的例子中看到,虽然线性回归线是一条最佳拟合线,但它不是一条平滑线。在本文的后面,我们将看到如何使用多种方法绘制平滑线。
例子:
R
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
plot + geom_smooth(method = lm)
R
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
plot + geom_smooth(method = loess)
R
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
plot + geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = FALSE)
R
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder, Assault)) + geom_point()
plot + stat_smooth(method = loess)
R
library(ggplot2)
spline.d <- as.data.frame(spline(USArrests$Murder, USArrests$Assault))
plot <- ggplot(USArrests, aes(x = Murder, y = Assault))+geom_point() +
geom_line(data = spline.d, aes(x = x, y = y))
plot
输出:
方法一:使用geom_smooth()函数的“loess”方法
我们可以使用 geom_smooth()函数的“ loess ”方法绘制一条平滑线。在这种情况下,唯一的区别是我们传递了method=loess,与前一种情况中的lm不同。这里,“loess”代表“局部回归拟合”。此方法绘制平滑的局部回归线。
句法:
geom_smooth(method = loess)
例子:
电阻
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
plot + geom_smooth(method = loess)
输出:
方法 2:使用多项式插值
我们还可以使用公式: y~ploy(x,3),以及线性模型方法,它为我们提供了与前面示例中相同的平滑线。在参数中将“ se ”传递为FALSE 。默认情况下,“ se ”的值保持为 TRUE,这会导致围绕平滑线绘制置信区间。
句法:
geom_smooth(method = “lm”, formula = y ~ poly(x, 3), se = FALSE)
例子:
电阻
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder,Assault)) + geom_point()
plot + geom_smooth(method = "lm", formula = y ~ poly(x, 3), se = FALSE)
输出:
方法三:使用stat_smooth ()函数和“loess”方法
stat_smooth() 和 geom_smooth() 都是别名。它们都有相同的参数,并且都用于绘制平滑线。我们可以使用stat_smooth()函数的“ loess ”方法绘制一条平滑线。在这种情况下,唯一的区别是我们传递了 method= loess ,与前一种情况下的 lm 不同。这里,“loess”代表“局部回归拟合” 。此方法绘制平滑的局部回归线。
语法:
stat_smooth(method = loess)
例子:
电阻
library(ggplot2)
plot <- ggplot(USArrests, aes(Murder, Assault)) + geom_point()
plot + stat_smooth(method = loess)
输出:
方法 4:样条插值
样条回归是一种更好的方法,因为它克服了多项式回归的缺点,因为多项式回归只能表达特定量的曲率。简单来说,样条是分段多项式函数。
要绘制样条,请在传递数据框进行绘图时使用 spline函数。
句法:
spline( attributes )
例子:
电阻
library(ggplot2)
spline.d <- as.data.frame(spline(USArrests$Murder, USArrests$Assault))
plot <- ggplot(USArrests, aes(x = Murder, y = Assault))+geom_point() +
geom_line(data = spline.d, aes(x = x, y = y))
plot
输出: