在本教程中,您将探索多种数据可视化 方法及其背后的统计学原理。 尤其关注如何在数据框中识别变量之间的趋势与关系。
没错,您将重点学习相关性与回归等概念!首先,您会在 R 中了解相关性。随后,您将学习如何使用 ggplot2 和 GGally 等包在 R 中绘制相关矩阵。最后,您将了解有哪些类型的相关性,以及它们对后续分析意味着什么。
如果您希望更深入学习,建议考虑 DataCamp 的相关与回归 课程。
背景
在今天的教程中,您将使用从 Kaggle 获取的电影数据集,来学习如何更好地理解变量之间的关系。
我对数据做了少量整理,以确保分析可“同类对比”,例如统一货币单位。否则,对 gross、budget 和 profit 等变量进行统计分析将会产生误导。您可以访问原始数据集。
导入数据
要使用 movies 数据集并投入分析,您可以用 read.csv() 函数将数据导入数据框,并存到名为 movies 的变量中!
movies <- read.csv(url("http://s3.amazonaws.com/dcwoods2717/movies.csv"))技术支持
就这么简单,马上开始吧!
数据的基本检查
导入数据框后,先对数据有个基本认识是个好主意。首先,查看所分析数据的结构。下面是使用这个非常简单且有用的函数 str() 的结果:
str(movies)技术支持
## 'data.frame' : 2961 obs. of 11 variables :
## $ title : Factor w/ 2907 levels "10 Cloverfield Lane" , . . : 1560 2143 34 2687 1405 1896 2633 894 1604 665 ...
## $ genre : Factor w/ 17 levels "Action" , "Adventure" , . . : 6 12 5 5 5 3 2 8 3 8 ...
## $ director : Factor w/ 1366 levels "Aaron Schneider" , . . : 474 472 781 828 175 1355 1328 1328 968 747 ...
## $ year : int 1920 1929 1933 1935 1936 1937 1939 1939 1940 1946 ...
## $ duration : int 110 100 89 81 87 83 102 226 88 144 ...
## $ gross : int 3000000 2808000 2300000 3000000 163245 184925485 22202612 198655278 84300000 20400000 ...
## $ budget : int 100000 379000 439000 609000 1500000 2000000 2800000 3977000 2600000 8000000 ...
## $ cast_facebook_likes: int 4 109 995 824 352 229 2509 1862 1178 2037 ...
## $ votes : int 5 4546 7921 13269 143086 133348 291875 215340 90360 6304 ...
## $ reviews : int 2 107 162 164 331 349 746 863 252 119 ...
## $ rating : num 4.8 6.3 7.7 7.8 8.6 7.7 8.1 8.2 7.5 6.9 ... 技术支持
从控制台可以看到,该数据框包含 2961 条观测与 11 个变量。
顺便说一句,即使每部电影只有一小时,您也需要连续看四个多月才能全部看完!
控制台还列出了每个变量的名称、变量类型以及部分取值。这让我们对数据框的内容有了不错的了解,而这种了解对后续分析至关重要。
另一个有助于快速高层概览数据框的好函数是 summary()。请注意它与运行 str() 所产出结果的异同。
summary(movies)技术支持
## title genre
## Home : 3 Comedy : 848
## A Nightmare on Elm Street : 2 Action : 738
## Across the Universe : 2 Drama : 498
## Alice in Wonderland : 2 Adventure : 288
## Aloha : 2 Crime : 202
## Around the World in 80 Days : 2 Biography : 135
## ( Other) : 2948 ( Other) : 252
## director year duration
## Steven Spielberg : 23 Min. : 1920 Min. : 37.0
## Clint Eastwood : 19 1st Qu. : 1999 1st Qu. : 95.0
## Martin Scorsese : 16 Median : 2004 Median : 106.0
## Tim Burton : 16 Mean : 2003 Mean : 109.6
## Spike Lee : 15 3rd Qu. : 2010 3rd Qu. : 119.0
## Steven Soderbergh: 15 Max. : 2016 Max. : 330.0
## ( Other) : 2857
## gross budget cast_facebook_likes
## Min. : 703 Min. : 218 Min. : 0
## 1st Qu. : 12276810 1st Qu. : 11000000 1st Qu. : 2241
## Median : 34703228 Median : 26000000 Median : 4604
## Mean : 58090401 Mean : 40619384 Mean : 12394
## 3rd Qu. : 75590286 3rd Qu. : 55000000 3rd Qu. : 16926
## Max. : 760505847 Max. : 300000000 Max. : 656730
##
## votes reviews rating
## Min. : 5 Min. : 2.0 Min. : 1.600
## 1st Qu. : 19918 1st Qu. : 199.0 1st Qu. : 5.800
## Median : 55749 Median : 364.0 Median : 6.500
## Mean : 109308 Mean : 503.3 Mean : 6.389
## 3rd Qu. : 133348 3rd Qu. : 631.0 3rd Qu. : 7.100
## Max. : 1689764 Max. : 5312.0 Max. : 9.300
## 技术支持
只需一条命令,R 就能返回数据框中每个变量的一些关键统计信息。现在您已了解手头的数据了,让我们更深入地探索吧!
特征工程:计算利润
回看现有变量,似乎有些数值变量可以加以运算,从而为数据框提供新的洞见。
例如,您有 gross 和 budget 变量,何不稍作子集运算,计算每部电影的利润呢?
您可以用公式 profit = gross - budget 来计算利润。请在下方的 DataCamp Light 代码块中试一试!
# Fill in the appropriate variable names to subset!
profit <- movies$..... - movies$.....
# Check the result
summary(profit)
太棒了!
您会看到我们的数据框中既有“赚钱机器”,也有“吞金黑洞”。
profit 这个变量很可能在后续分析中派上用场,所以让我们把 profit 作为新列添加到数据框中。
# Add a column for `profit` to `movies`
movies$..... <- movies$..... - movies$.....
相关性
现在已将 profit 作为新列加入数据框,是时候更仔细地考察数据集中变量之间的关系了。
让我们看看 profit 相对每部电影的 rating 是如何波动的。
为此,您可以使用 R 内置的 plot 和 abline 函数,其中 plot 会生成散点图,abline 会加上一条回归线或“最佳拟合线”,这是因为我们包含了线性模型参数,稍后您会看到。
# Create the scatter plot with `ratings` on the x-axis and `profit` on the y-axis
plot(movies$...., movies$....)
# Add a regression linewith the form `abline(lm(y ~ x))`
abline(lm(movies$.... ~ movies$....))
输出结果是否如您所料?
总体来看,rating 越高的电影往往有更高的 profit。换句话说,至少在我们的数据框中,rating 与 profit 之间存在正相关。
话虽如此,即便粗看这张图也会发现,仍有不少高评分但并非大片的电影,同时也有不少非常赚钱但评分相对较低的电影。
相关性并不意味着因果关系!
下面有个小例子帮助理解相关与因果的区别:我在海滩边卖冰淇淋。城市里闯红灯的人数通常会随着我的冰淇淋销量增加而上升,但我的冰淇淋会导致人们无视交通法规吗?还是有其他因素在起作用?我的冰淇淋确实很棒,但晴朗的天气大概更能解释为何人们想吃冰淇淋,也不想在斑马线旁晒太阳。冰淇淋销量和闯红灯人数之间确实存在一种关系(相关),但您无法明确断言它是因果关系。
在继续本教程时,请牢记这条思路!
在 R 中计算相关性
那么,在 movies 中,变量之间存在哪些关系?您又如何定量评估这些关系?
第一种方式是使用 cor() 计算相关性与相关矩阵:
# Compute Pearson correlation
cor(movies$rating, movies$profit)
# Correlation Matrix
cor(movies[,4:10])
注意 ,您还可以指定方法,以表明要计算哪种相关系数。需要小心,因为这些相关方法都有各自的假设:Kendall 和 Spearman 方法只适用于有序输入。这意味着您需要先对数据排序,再计算相关系数。
此外,默认方法 Pearson 相关假设您的变量服从正态分布,变量之间存在线性关系,并且数据围绕回归线近似正态分布。
另外,您也可以使用 Hmisc 包中的 rcorr() 来计算 Pearson 和 Spearman 相关的显著性水平。
您还会注意到,相关矩阵本质上是一张表,用来显示一组变量之间的相关系数。这已经是了解数据集中变量关系的很好起点了,但我们在下一节里再更深入一些。
可视化探索相关性:R 相关矩阵
接下来,您将使用 movies 数据框中的变量来绘制一张相关矩阵。这张简单的图能让您快速看出哪些变量对其他变量呈现负相关、正相关、弱相关或强相关。
为实现这一点,您将使用一个很实用的包 GGally 和其中的 ggcorr() 函数。
函数调用形式为 ggcorr(df),其中 df 是您要调用的那个数据框。该函数的输出是一个三角形配色矩阵,标有变量名。每个变量相对于其他变量的相关系数,可以通过在矩阵中按行和/或按列读取对应单元格来获取,具体取决于该变量在矩阵中的位置。
听起来可能有点绕,但实际操作非常简单,试试下面的代码块吧!
# Replace the "....." with the name of the data frame
ggcorr(.....)
在您刚创建的相关矩阵中(顺便说一句,做得很好!),您可以找到与某个变量(如 year)对应的行或列,并通过与另一个变量对应单元格的颜色来查看它们的相关系数。
以 year 为例,您会看到它与 budget 呈弱正相关,与 rating 呈类似的弱负相关。
相关系数总是介于 -1 到 1 之间(包含端点)。相关系数为 -1 表示完美的负向拟合,此时 y 值的下降速率与 x 值的上升速率相同。相关系数为 1 表示完美的正向拟合,此时 y 值的上升速率与 x 值的上升速率相同。
在大多数情况下,如上面的 year 示例,相关系数会落在 -1 与 1 之间的某个位置。
您是否注意到相关矩阵中显示的变量有点不对劲?
movies 中并非所有变量都出现了!
这是因为 movies 中并非所有变量都是数值型的。ggcorr 会自动忽略非数值变量,这省去了用户在创建矩阵前手动“剔除”这类变量的时间。
如果您希望相关矩阵更醒目(或者像我一样有点色弱),可以做一些简单调整,生成更具视觉吸引力、信息量更大的矩阵。
在接下来的代码中,您会用到 label 参数,它可以设为 TRUE 或 FALSE。默认是 FALSE,但如果添加 label = TRUE,每个关系的相关系数就会显示在相应单元格中。这样您就不用再根据颜色刻度去“猜”每个系数的大小了。
label_alpha 参数允许您根据相关系数的强弱来调整每个标签的不透明度。这对快速的可视化分析非常有帮助。
别只听我说,亲自试试吧!
现在我们来绘制一张更好的相关矩阵:
# Fill in "TRUE" or "FALSE" to see how the correlation matrix changes
ggcorr(movies,
label = .....,
label_alpha = .....)
在接下来的图中,您会看到当出现“强”相关时,其回归线(x/y)的斜率更接近 1/1 或 -1/1;而“弱”相关的图,其回归线的斜率可能非常小。斜率越接近 1/1 或 -1/1,意味着两变量的关系越密切。
对我们的 movies 数据框来说,这样的回归线能对变量关系给出有力洞见,也可能暗示变量之间的相互依赖。
例如,在之前 profit 相对于 rating 的图中,回归线呈中等强度的正斜率。回看相关矩阵,这两个变量的相关系数为 0.3。
合情合理,对吧?
相关性的类型
现在我们再通过更多图例来看看上一节中出现的不同相关类型!
强相关:绘制投票数与评论数
我们先绘制两组呈强正相关的变量。
查看相关矩阵,votes 与 reviews 符合条件,相关值为 0.8。这意味着回归线的斜率应较接近 1/1。
在本练习及后续练习中,您将使用 ggplot2 包。ggplot2 是一套强大的工具,可用于创建具有说服力的数据可视化。
在这里,您将使用 ggplot2 包中的 qplot 函数。根据传给 geom(几何图层)参数的图形类型不同,qplot 可以生成多种图。
在下方代码中,geom 被设为包含两种几何类型的向量:point 和 smooth。point 生成散点图,smooth 生成趋势线。您还会注意到 method 被设为 lm,这表示趋势线将是我们在之前“profit 随 years 变化”图中所见的那条熟悉的线性回归直线。
总之,您将看到快速生成高质量数据可视化有多么简单!
# Plot votes vs reviews
qplot(movies$.....,
movies$.....,
data = .....,
geom = c("point", "smooth"),
method = "lm",
alpha = I(1 / 5),
se = FALSE)
您可能注意到在上面的 qplot 中包含了 alpha 参数。qplot 中的 alpha 会对散点图中的点应用不透明度梯度,这与它在 ggcorr 中改变相关系数标签不透明度的方式类似。
在当前设置下,只有当一个点被另外 5 个点重叠时才会达到完全不透明。增减 alpha 分母中的数字会影响改变一个点不透明度所需的重叠点数量。使用这种美学映射的一个原因是,它可以帮助用户快速识别图中数据点的密集区域,从而一眼之间便能获得新的洞见。
动手调整一下代码,看看效果吧!
弱相关:绘制利润随年份变化
现在我们通过绘制 profit 相对 years 的图,来看看“弱”负相关是什么样子。这次我们没有指定 method,因此趋势线将根据数据以曲线方式变化(拟合曲线),这是该函数的默认行为。您会注意到,在趋势线的某些部分,浅灰色区域的大小会随趋势线置信区间而增大或缩小。
如果您对置信区间的概念还不熟悉,不必担心!R 会帮您完成计算,练习之后我们再做更好的解释。
现在,请先填好必要的代码并观察结果!
# Plot profit over years
qplot(movies$year,
movies$profit,
data = movies,
geom = c("point", "smooth"),
alpha = I(1 / 5))
现在您已经看到置信区间与平滑曲线的实际效果了,可以做出哪些观察?
首先,在图的起始部分,profit 似乎随着 year 的增加而上升。
其次,您会注意到在平滑曲线的初期,灰色区域(置信区间)较大,而数据点(或观测值)较少。
第三,随着曲线进入观测值更为密集的区间,灰色区域缩小并几乎贴合曲线,而曲线在后期 year 开始下降。
总之,将置信区间与平滑曲线一起绘制,可以让我们看到与回归线相关的不确定性。观测值越少,不确定性越大;观测值越多,不确定性越小。
这对于可视化变量关系在整个数据框中的变化非常有用,也揭示了观测值的密集程度是如何改变拟合曲线的。
但需要注意的是,该图可能有些误导,因为仅从视觉上并不容易判断变量之间是正相关还是负相关。
现在,让我们用与“votes 对 reviews”相同的方式来绘制“profit 随 year 变化”的图:只需将每个参数中的“…….”替换为合适的代码,使年份绘制在 x 轴上,profit 在 y 轴上。别忘了指定 “data” 所对应的数据框!
# Plot the years on the x-axis, profit on the y-axis
qplot(movies$.....,
movies$.....,
data = .....,
geom = c("point", "smooth"),
method = "lm",
alpha = I(1 / 5),
se = FALSE)
回看相关矩阵,您会看到 profit 与 year 的相关系数为 -0.1,在带有最佳拟合线的图中也许比在采用拟合曲线的图中更易于观察。
融会贯通
现在我们再来看 GGally 中另一个强大的函数 ggpairs。该函数的优势在于,它能创建一个矩阵,将多个变量之间的相关系数、散点图(包含带置信区间的最佳拟合线)以及密度图组合展示。
只用这一函数,您就能把本教程所覆盖的要点有效地整合在一起,并以简明易懂的方式呈现。
在下面的代码块中,从数据框中挑选您最喜欢的三个变量(无需手动取子集!),填进去并运行!
# Plug in your three favorite variables and tinker away!
ggpairs(movies,
columns = c(".....", ".....", "....."),
upper = list(continuous = wrap("cor",
size = 10)),
lower = list(continuous = "smooth"))
如您所料,很多情境下都会有一种更合适的图表类型——关键在于了解可用的可视化技术、如何使用它们,以及最终结果所代表的含义!
后续进阶
本教程内容相当丰富,恭喜您坚持学到最后!
希望您能在自己的数据分析实践中用上这些概念!这些确实是 R 中数据探索的基础,您还能做更多事情,帮助在建模分析之前充分把握数据特征。不妨再进一步,开始 DataCamp 的探索性数据分析 课程?
同时也欢迎您前往 Kaggle 挑选一个丰富而有趣的数据集来探索,如果您不想继续使用本教程的 movies 数据集!
在本教程中,您将探索多种数据可视化方法及其背后的统计学原理。尤其关注如何在数据框中识别变量之间的趋势与关系。
没错,您将重点学习相关性与回归等概念!首先,您会在 R 中了解相关性。随后,您将学习如何使用
ggplot2和GGally等包在 R 中绘制相关矩阵。最后,您将了解有哪些类型的相关性,以及它们对后续分析意味着什么。如果您希望更深入学习,建议考虑 DataCamp 的相关与回归课程。
背景
在今天的教程中,您将使用从 Kaggle 获取的电影数据集,来学习如何更好地理解变量之间的关系。
我对数据做了少量整理,以确保分析可“同类对比”,例如统一货币单位。否则,对
gross、budget和profit等变量进行统计分析将会产生误导。您可以访问原始数据集。导入数据
要使用
movies数据集并投入分析,您可以用read.csv()函数将数据导入数据框,并存到名为movies的变量中!就这么简单,马上开始吧!
数据的基本检查
导入数据框后,先对数据有个基本认识是个好主意。首先,查看所分析数据的结构。下面是使用这个非常简单且有用的函数
str()的结果:从控制台可以看到,该数据框包含 2961 条观测与 11 个变量。
顺便说一句,即使每部电影只有一小时,您也需要连续看四个多月才能全部看完!
控制台还列出了每个变量的名称、变量类型以及部分取值。这让我们对数据框的内容有了不错的了解,而这种了解对后续分析至关重要。
另一个有助于快速高层概览数据框的好函数是
summary()。请注意它与运行str()所产出结果的异同。只需一条命令,R 就能返回数据框中每个变量的一些关键统计信息。现在您已了解手头的数据了,让我们更深入地探索吧!
特征工程:计算利润
回看现有变量,似乎有些数值变量可以加以运算,从而为数据框提供新的洞见。
例如,您有
gross和budget变量,何不稍作子集运算,计算每部电影的利润呢?您可以用公式
profit = gross - budget来计算利润。请在下方的 DataCamp Light 代码块中试一试!太棒了!
您会看到我们的数据框中既有“赚钱机器”,也有“吞金黑洞”。
profit这个变量很可能在后续分析中派上用场,所以让我们把profit作为新列添加到数据框中。相关性
现在已将
profit作为新列加入数据框,是时候更仔细地考察数据集中变量之间的关系了。让我们看看
profit相对每部电影的rating是如何波动的。为此,您可以使用 R 内置的
plot和abline函数,其中plot会生成散点图,abline会加上一条回归线或“最佳拟合线”,这是因为我们包含了线性模型参数,稍后您会看到。输出结果是否如您所料?
总体来看,
rating越高的电影往往有更高的profit。换句话说,至少在我们的数据框中,rating与profit之间存在正相关。话虽如此,即便粗看这张图也会发现,仍有不少高评分但并非大片的电影,同时也有不少非常赚钱但评分相对较低的电影。
相关性并不意味着因果关系!
下面有个小例子帮助理解相关与因果的区别:我在海滩边卖冰淇淋。城市里闯红灯的人数通常会随着我的冰淇淋销量增加而上升,但我的冰淇淋会导致人们无视交通法规吗?还是有其他因素在起作用?我的冰淇淋确实很棒,但晴朗的天气大概更能解释为何人们想吃冰淇淋,也不想在斑马线旁晒太阳。冰淇淋销量和闯红灯人数之间确实存在一种关系(相关),但您无法明确断言它是因果关系。
在继续本教程时,请牢记这条思路!
在 R 中计算相关性
那么,在
movies中,变量之间存在哪些关系?您又如何定量评估这些关系?第一种方式是使用
cor()计算相关性与相关矩阵:注意,您还可以指定方法,以表明要计算哪种相关系数。需要小心,因为这些相关方法都有各自的假设:Kendall 和 Spearman 方法只适用于有序输入。这意味着您需要先对数据排序,再计算相关系数。
此外,默认方法 Pearson 相关假设您的变量服从正态分布,变量之间存在线性关系,并且数据围绕回归线近似正态分布。
另外,您也可以使用
Hmisc包中的rcorr()来计算 Pearson 和 Spearman 相关的显著性水平。您还会注意到,相关矩阵本质上是一张表,用来显示一组变量之间的相关系数。这已经是了解数据集中变量关系的很好起点了,但我们在下一节里再更深入一些。
可视化探索相关性:R 相关矩阵
接下来,您将使用
movies数据框中的变量来绘制一张相关矩阵。这张简单的图能让您快速看出哪些变量对其他变量呈现负相关、正相关、弱相关或强相关。为实现这一点,您将使用一个很实用的包
GGally和其中的ggcorr()函数。函数调用形式为
ggcorr(df),其中df是您要调用的那个数据框。该函数的输出是一个三角形配色矩阵,标有变量名。每个变量相对于其他变量的相关系数,可以通过在矩阵中按行和/或按列读取对应单元格来获取,具体取决于该变量在矩阵中的位置。听起来可能有点绕,但实际操作非常简单,试试下面的代码块吧!
在您刚创建的相关矩阵中(顺便说一句,做得很好!),您可以找到与某个变量(如
year)对应的行或列,并通过与另一个变量对应单元格的颜色来查看它们的相关系数。以
year为例,您会看到它与budget呈弱正相关,与rating呈类似的弱负相关。相关系数总是介于 -1 到 1 之间(包含端点)。相关系数为 -1 表示完美的负向拟合,此时 y 值的下降速率与 x 值的上升速率相同。相关系数为 1 表示完美的正向拟合,此时
y值的上升速率与x值的上升速率相同。在大多数情况下,如上面的
year示例,相关系数会落在 -1 与 1 之间的某个位置。您是否注意到相关矩阵中显示的变量有点不对劲?
movies中并非所有变量都出现了!这是因为
movies中并非所有变量都是数值型的。ggcorr会自动忽略非数值变量,这省去了用户在创建矩阵前手动“剔除”这类变量的时间。如果您希望相关矩阵更醒目(或者像我一样有点色弱),可以做一些简单调整,生成更具视觉吸引力、信息量更大的矩阵。
在接下来的代码中,您会用到
label参数,它可以设为TRUE或FALSE。默认是FALSE,但如果添加label = TRUE,每个关系的相关系数就会显示在相应单元格中。这样您就不用再根据颜色刻度去“猜”每个系数的大小了。label_alpha参数允许您根据相关系数的强弱来调整每个标签的不透明度。这对快速的可视化分析非常有帮助。别只听我说,亲自试试吧!
现在我们来绘制一张更好的相关矩阵:
在接下来的图中,您会看到当出现“强”相关时,其回归线(
x/y)的斜率更接近 1/1 或 -1/1;而“弱”相关的图,其回归线的斜率可能非常小。斜率越接近 1/1 或 -1/1,意味着两变量的关系越密切。对我们的
movies数据框来说,这样的回归线能对变量关系给出有力洞见,也可能暗示变量之间的相互依赖。例如,在之前
profit相对于rating的图中,回归线呈中等强度的正斜率。回看相关矩阵,这两个变量的相关系数为 0.3。合情合理,对吧?
相关性的类型
现在我们再通过更多图例来看看上一节中出现的不同相关类型!
强相关:绘制投票数与评论数
我们先绘制两组呈强正相关的变量。
查看相关矩阵,
votes与reviews符合条件,相关值为 0.8。这意味着回归线的斜率应较接近 1/1。在本练习及后续练习中,您将使用
ggplot2包。ggplot2是一套强大的工具,可用于创建具有说服力的数据可视化。在这里,您将使用
ggplot2包中的qplot函数。根据传给geom(几何图层)参数的图形类型不同,qplot可以生成多种图。在下方代码中,
geom被设为包含两种几何类型的向量:point和smooth。point生成散点图,smooth生成趋势线。您还会注意到method被设为lm,这表示趋势线将是我们在之前“profit随years变化”图中所见的那条熟悉的线性回归直线。总之,您将看到快速生成高质量数据可视化有多么简单!
您可能注意到在上面的
qplot中包含了alpha参数。qplot中的alpha会对散点图中的点应用不透明度梯度,这与它在ggcorr中改变相关系数标签不透明度的方式类似。在当前设置下,只有当一个点被另外 5 个点重叠时才会达到完全不透明。增减
alpha分母中的数字会影响改变一个点不透明度所需的重叠点数量。使用这种美学映射的一个原因是,它可以帮助用户快速识别图中数据点的密集区域,从而一眼之间便能获得新的洞见。动手调整一下代码,看看效果吧!
弱相关:绘制利润随年份变化
现在我们通过绘制
profit相对years的图,来看看“弱”负相关是什么样子。这次我们没有指定method,因此趋势线将根据数据以曲线方式变化(拟合曲线),这是该函数的默认行为。您会注意到,在趋势线的某些部分,浅灰色区域的大小会随趋势线置信区间而增大或缩小。如果您对置信区间的概念还不熟悉,不必担心!R 会帮您完成计算,练习之后我们再做更好的解释。
现在,请先填好必要的代码并观察结果!
现在您已经看到置信区间与平滑曲线的实际效果了,可以做出哪些观察?
profit似乎随着year的增加而上升。year开始下降。总之,将置信区间与平滑曲线一起绘制,可以让我们看到与回归线相关的不确定性。观测值越少,不确定性越大;观测值越多,不确定性越小。
这对于可视化变量关系在整个数据框中的变化非常有用,也揭示了观测值的密集程度是如何改变拟合曲线的。
但需要注意的是,该图可能有些误导,因为仅从视觉上并不容易判断变量之间是正相关还是负相关。
现在,让我们用与“
votes对reviews”相同的方式来绘制“profit随year变化”的图:只需将每个参数中的“…….”替换为合适的代码,使年份绘制在x轴上,profit在 y 轴上。别忘了指定 “data” 所对应的数据框!回看相关矩阵,您会看到
profit与year的相关系数为 -0.1,在带有最佳拟合线的图中也许比在采用拟合曲线的图中更易于观察。融会贯通
现在我们再来看
GGally中另一个强大的函数ggpairs。该函数的优势在于,它能创建一个矩阵,将多个变量之间的相关系数、散点图(包含带置信区间的最佳拟合线)以及密度图组合展示。只用这一函数,您就能把本教程所覆盖的要点有效地整合在一起,并以简明易懂的方式呈现。
在下面的代码块中,从数据框中挑选您最喜欢的三个变量(无需手动取子集!),填进去并运行!
如您所料,很多情境下都会有一种更合适的图表类型——关键在于了解可用的可视化技术、如何使用它们,以及最终结果所代表的含义!
后续进阶
本教程内容相当丰富,恭喜您坚持学到最后!
希望您能在自己的数据分析实践中用上这些概念!这些确实是 R 中数据探索的基础,您还能做更多事情,帮助在建模分析之前充分把握数据特征。不妨再进一步,开始 DataCamp 的探索性数据分析课程?
同时也欢迎您前往 Kaggle 挑选一个丰富而有趣的数据集来探索,如果您不想继续使用本教程的
movies数据集!