本教程将告诉你如何在R中使用geom_smooth函数。
它解释了geom_smooth的作用,解释了语法,并逐步展示了如何使用这个函数的例子。
如果你需要特定的东西,你可以点击以下任何一个链接。这些链接将直接把你带到教程中的适当位置。
对Geom Smooth的快速介绍
geom smooth函数是R语言中[ggplot2可视化包]的一个函数。
从本质上讲,geom_smooth()
,在一个现有的图上添加一条趋势线。
默认情况下,添加的趋势线是一条LOESS平滑线。 但是也有一些选项可以让你改变线的性质。 例如,你可以添加一条直的 "线性模型 "线。
添加的线的具体属性取决于语法。
既然如此,我们来看看geom_smooth()
函数的语法。
Geom Smooth的语法
在这里,我们将看一下geom_smooth的语法。
一个简单的说明
注意,要使用geom_smooth,你需要安装ggplot2。
而且,你需要把ggplot2加载到你的环境中。
你可以通过代码library(ggplot2)
,或者代码library(tidyverse)
,这将加载ggplot2、dplyr和其他Tidyverse包。
geom_smooth的语法
使用geom_smooth()
的语法相当简单。
我们将这个函数与现有的ggplot2绘图结合起来使用。
这意味着,你应该已经创建了一个ggplot2可视化。 然后,你可以用'+
'符号调用geom_smooth()
。
此外,还有一些可选的参数,你可以在括号内使用,以改变函数的行为。
geom_smooth的参数
geom_smooth函数有大量的可选参数,但你应该知道的最重要的参数是。
mapping
data
span
method
formula
se
position
na.rm
orientation
show.legend
inherit.aes
n
fullrange
level
method.args
让我们一个一个地看这些参数。
data
data
参数指定了与这个平滑线层相关的数据。
默认情况下,geom_smooth将继承你在顶行调用ggplot()
时指定的数据集。
你可以通过向data
参数提供一个新的数据框架的名称来覆盖该继承的数据。(你可以提供数据框架以外的对象,但它们将被强化以创建一个数据框架)。
mapping
这个参数使你能够指定从你的数据到绘图美学的映射。
默认情况下,你不需要用这个参数指定一个映射,因为通常情况下,你会在ggplot()
函数中这样做,geom_smooth会继承这个映射。(默认情况下,inherit.aes
参数被设置为inherit.aes = False
。)
如果你设置了inherit.aes = True
,那么你就需要用这个参数指定一个映射。
method
method
参数允许你指定要使用的平滑函数(即,平滑方法)。
这个参数有几个可能的参数。
如果你把这个参数设置为NULL
,那么如果观测值少于1000个,函数将默认使用LOESS平滑,如果有1000个以上的观测值,mgcv::gam()
。
你也可以把它设置为字符串值。
"lm"
"glm"
"gam"
"loess"
或者你可以把它设置为R统计函数,比如。
MASS::rlm
mgcv::gam
stats::lm
stats::loess
formula
formula
,允许你指定一个确切的公式来用于平滑线。
例如,你可以明确地设置"formula = y ~ x
"。
se
se
参数使你能够指定你是否希望在平滑线周围有一个置信区间。
默认情况下,它被设置为 "se = True
"。 正如你在例子中看到的,这在平滑线周围创建了一个深灰色的区域。 这个深灰色区域表示置信区间(默认为0.95)。
如果你设置"se = False
",它将删除置信区间。
position
position
参数允许你为该函数指定一个位置调整。
na.rm
na.rm
参数控制该函数如何处理缺失值。
如果你设置 "na.rm
= False ",那么函数将删除缺失值并发出警告。
如果你设置 "na.rm
= True ",那么函数将删除缺失值,但关闭警告。
orientation
orientation
参数控制平滑线的生成方向。
默认情况下,它被设置为 "orientation = NA
。 这将导致函数自动确定方向。
另外,你可以手动将这个参数的参数设置为 "x
" 或 "y
" 。
show.legend
show.legend
参数允许你指定关于平滑线层的美学映射的信息。
默认情况下,这个参数被设置为show.legend = NA
,其中包括这些信息。
如果你设置show.legend = FALSE
,它将从图例中排除美学映射信息。
inherit.aes
inherit.aes
控制geom_smooth层是否会从顶线 函数调用中继承美学映射。ggplot()
默认情况下,它被设置为inherit.aes = TRUE
。
如果你把它设置为inherit.aes = FALSE
,你将能够手动覆盖默认的美学映射。
n
n
参数控制平滑函数的 "评估点的数量"。
span
span
指定对默认的LOESS平滑函数使用多少平滑。
默认情况下,它被设置为span = 0.75
。
随着span
的增加,平滑线将变得更加平滑。
随着span
的减少,平滑线将变得更加粗糙和灵活。
注意,这个参数只适用于使用LOESS平滑的情况。
fullrange
fullrange
控制线条是只适合数据,还是适合整个图。
level
level
参数控制线条周围的置信区间的大小。
默认情况下,这个参数被设置为level = .95
。
关于参数的最后说明
请记住,这些参数中的大多数都很少使用。
你通常只使用method
、span
,可能还有formula
。
如何使用geom_smooth的例子
现在我们已经看过了语法,让我们来看看如何使用geom smooth来为你的数据添加一条平滑线或趋势线的一些例子。
例子
- [添加一条LOESS平滑线]
- [添加一条 "线性模型 "的直线]
- [改变平滑线的平滑度/粗糙度]
设置代码
在你运行这些例子之前,你需要运行一些设置代码。
具体来说,你需要
- 加载Tidyverse软件包
- 创建一些我们可以可视化的样本数据
加载Tidyverse
首先,你需要加载Tidyverse包。
library(tidyverse)
我们将主要使用ggplot2
,用于我们的可视化,但我们稍后也会需要tibble()
函数来创建一个数据集。 既然如此,最好是直接加载整个tidyverse
函数,而不是专门加载ggplot2
。
创建数据
现在,我们将创建一个简单的数据集,我们可以将其可视化。
在这里,我们将使用tibble()
函数来创建一个 "tibble",它本质上只是一个漂亮的数据框。
set.seed(55)
scatter_data <- tibble(x_var = runif(100, min = 0, max = 25)
,y_var = log2(x_var) + rnorm(100)
)
这个数据集有两个变量:x_var
和y_var
。
ggplot(data = scatter_data, aes(x = x_var, y = y_var)) +
geom_point(color = 'red')
OUT。
正如你所看到的,这两个变量之间有一个温和的曲线关系。
我们将使用geom_smooth在这个散点图的顶部添加一条平滑的线来可视化这种关系。
例子1:添加一条LOESS平滑线
首先,我们要在上面的散点图上添加一条LOESS平滑线。
我们先运行代码,然后我再来解释。
ggplot(data = scatter_data, aes(x = x_var, y = y_var)) +
geom_point(color = 'red') +
geom_smooth()
结束。
解释
这是很简单的。
在这里,我们通过调用ggplot()
和geom_point()
创建了一个散点图。
为了在上面添加一条平滑线,我们只需使用'+
' 符号,然后调用geom_smooth()
。
记住:ggplot2允许你分层建立图。 如果你需要建立一个带有平滑线的散点图,你可以直接写出散点图的代码,然后使用'+
'符号来添加一个新的图层(平滑线)。
在这种情况下,默认情况下,这条线是一条LOESS(局部加权散点图平滑线)。
不过,我们可以添加不同类型的线条,我们将在下一个例子中这样做。
实例2:用geom_smooth添加一条直线 "线性模型"
接下来,我们要在散点图的数据上添加一条直线。
实际上,我们将使用geom_smooth来创建一个简单的线性模型,并在数据上绘制该模型。
为了做到这一点,我们将设置method = 'lm'
。
这里是代码。
ggplot(data = scatter_data, aes(x = x_var, y = y_var)) +
geom_point(color = 'red') +
geom_smooth(method = 'lm')
这里是输出结果。
解释
这是很简单的。
我们有我们的散点图,而且我们正在添加一条趋势线作为新的层,其中包括'+
' 和geom_smooth()
。
但是在这种情况下,我们要添加一个直线的线性模型,而不是LOESS线。
要做到这一点,我们只需设置method = 'lm'
。(如果你还不明白, 'lm
' 意思是 "线性模型"。)
实例3:改变平滑线的平滑度/粗糙度
最后,让我们再次创建一条LOESS平滑线,但让我们创建一条更粗糙、更灵活的线。
要做到这一点,我们将使用span
参数。
ggplot(data = scatter_data, aes(x = x_var, y = y_var)) +
geom_point(color = 'red') +
geom_smooth(span = .2)
输出
解释
在这里,为了创建LOESS线,我们调用geom smooth,就像我们在[例子1]中做的那样。
这里的主要区别是,我们使用span
参数来改变线条的平滑度。
具体来说,我们把span
减少到0.2(默认是0.75)。
随着跨度的减少,线条将变得更加粗糙,而随着跨度的增加,线条将变得更加平滑。
请记住,要找到span
的理想值可能需要一些试验和错误。
还要注意,在这种情况下,降低跨度可能实际上是不好的。 它导致线条跟随数据中的一些噪音,而不是更普遍的基本模式。
当你使用这个参数时,你需要小心。
关于KEYWORD的常见问题
现在你已经了解了geom_smooth并看到了一些例子,让我们回顾一下一些常见问题。
问题1:geom_smooth和stat_smooth有什么区别?
实际上,没有什么区别。 它们几乎是相同的。
唯一的区别是,stat_smooth允许你用 "非标准几何 "来作图。