跳至内容

R 相关性教程

了解 R 中相关性的基础:进一步学习相关系数、相关矩阵、相关性可视化绘图等。
已更新 2026年10月8日  · 13分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

correlation

在本教程中,您将探索多种数据可视化方法及其背后的统计学原理。尤其关注如何在数据框中识别变量之间的趋势与关系。

没错,您将重点学习相关性与回归等概念!首先,您会在 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 代码块中试一试!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKSIsInNhbXBsZSI6IiMgRmlsbCBpbiB0aGUgYXBwcm9wcmlhdGUgdmFyaWFibGUgbmFtZXMgdG8gc3Vic2V0IVxucHJvZml0IDwtIG1vdmllcyQuLi4uLiAtIG1vdmllcyQuLi4uLlxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNvbHV0aW9uIjoiIyBGaWxsIGluIHRoZSBhcHByb3ByaWF0ZSB2YXJpYWJsZSBuYW1lcyB0byBzdWJzZXQhXG5wcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxuXG4jIENoZWNrIHRoZSByZXN1bHRcbnN1bW1hcnkocHJvZml0KSIsInNjdCI6InRlc3Rfb2JqZWN0KFwicHJvZml0XCIsIHVuZGVmaW5lZF9tc2c9XCJEaWQgeW91IGNvcnJlY3RseSBkZWZpbmUgdGhlIHZhcmlhYmxlIGBwcm9maXRgP1wiLCBpbmNvcnJlY3RfbXNnID0gXCJOb3QgcXVpdGUhXCIpXG50ZXN0X2Vycm9yKClcbnN1Y2Nlc3NfbXNnKFwiRXhjZWxsZW50IVwiKSJ9

太棒了!

您会看到我们的数据框中既有“赚钱机器”,也有“吞金黑洞”。

profit 这个变量很可能在后续分析中派上用场,所以让我们把 profit 作为新列添加到数据框中。

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikiLCJzYW1wbGUiOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2AgXG5tb3ZpZXMkLi4uLi4gPC0gbW92aWVzJC4uLi4uIC0gbW92aWVzJC4uLi4uIiwic29sdXRpb24iOiIjIEFkZCBhIGNvbHVtbiBmb3IgYHByb2ZpdGAgdG8gYG1vdmllc2Bcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldCJ9

相关性

现在已将 profit 作为新列加入数据框,是时候更仔细地考察数据集中变量之间的关系了。

让我们看看 profit 相对每部电影的 rating 是如何波动的。

为此,您可以使用 R 内置的 plot 和 abline 函数,其中 plot 会生成散点图,abline 会加上一条回归线或“最佳拟合线”,这是因为我们包含了线性模型参数,稍后您会看到。

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS9kY3dvb2RzMjcxNy9tb3ZpZXMuY3N2XCIpKVxubW92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5vcHRpb25zKHNjaXBlbiA9IDk5OSkiLCJzYW1wbGUiOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJC4uLi4sIG1vdmllcyQuLi4uKVxuXG4jIEFkZCBhIHJlZ3Jlc3Npb24gbGluZXdpdGggdGhlIGZvcm0gYGFibGluZShsbSh5IH4geCkpYFxuXG5hYmxpbmUobG0obW92aWVzJC4uLi4gfiBtb3ZpZXMkLi4uLikpIiwic29sdXRpb24iOiIjIENyZWF0ZSB0aGUgc2NhdHRlciBwbG90IHdpdGggYHJhdGluZ3NgIG9uIHRoZSB4LWF4aXMgYW5kIGBwcm9maXRgIG9uIHRoZSB5LWF4aXNcbnBsb3QobW92aWVzJHJhdGluZywgbW92aWVzJHByb2ZpdClcblxuIyBBZGQgYSByZWdyZXNzaW9uIGxpbmUgd2l0aCB0aGUgZm9ybSBgYWJsaW5lKGxtIHkgfiB4KSlgIFxuYWJsaW5lKGxtKG1vdmllcyRwcm9maXQgfiBtb3ZpZXMkcmF0aW5nKSkifQ==

输出结果是否如您所料?

R regression

总体来看,rating 越高的电影往往有更高的 profit。换句话说,至少在我们的数据框中,rating 与 profit 之间存在正相关。

话虽如此,即便粗看这张图也会发现,仍有不少高评分但并非大片的电影,同时也有不少非常赚钱但评分相对较低的电影。

相关性并不意味着因果关系!

下面有个小例子帮助理解相关与因果的区别:我在海滩边卖冰淇淋。城市里闯红灯的人数通常会随着我的冰淇淋销量增加而上升,但我的冰淇淋会导致人们无视交通法规吗?还是有其他因素在起作用?我的冰淇淋确实很棒,但晴朗的天气大概更能解释为何人们想吃冰淇淋,也不想在斑马线旁晒太阳。冰淇淋销量和闯红灯人数之间确实存在一种关系(相关),但您无法明确断言它是因果关系。

在继续本教程时,请牢记这条思路!

在 R 中计算相关性

那么,在 movies 中,变量之间存在哪些关系?您又如何定量评估这些关系?

第一种方式是使用 cor() 计算相关性与相关矩阵:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdihcImh0dHA6Ly9zMy5hbWF6b25hd3MuY29tL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIilcbm1vdmllcyRwcm9maXQgPC0gbW92aWVzJGdyb3NzIC0gbW92aWVzJGJ1ZGdldFxub3B0aW9ucyhzY2lwZW4gPSA5OTkpIiwic2FtcGxlIjoiIyBDb21wdXRlIFBlYXJzb24gY29ycmVsYXRpb25cbmNvcihtb3ZpZXMkcmF0aW5nLCBtb3ZpZXMkcHJvZml0KVxuXG4jIENvcnJlbGF0aW9uIE1hdHJpeFxuY29yKG1vdmllc1ssNDoxMF0pIn0=

注意,您还可以指定方法,以表明要计算哪种相关系数。需要小心,因为这些相关方法都有各自的假设:Kendall 和 Spearman 方法只适用于有序输入。这意味着您需要先对数据排序,再计算相关系数。

此外,默认方法 Pearson 相关假设您的变量服从正态分布,变量之间存在线性关系,并且数据围绕回归线近似正态分布。

另外,您也可以使用 Hmisc 包中的 rcorr() 来计算 Pearson 和 Spearman 相关的显著性水平。

您还会注意到,相关矩阵本质上是一张表,用来显示一组变量之间的相关系数。这已经是了解数据集中变量关系的很好起点了,但我们在下一节里再更深入一些。

可视化探索相关性:R 相关矩阵

接下来,您将使用 movies 数据框中的变量来绘制一张相关矩阵。这张简单的图能让您快速看出哪些变量对其他变量呈现负相关、正相关、弱相关或强相关。

为实现这一点,您将使用一个很实用的包 GGally 和其中的 ggcorr() 函数。

函数调用形式为 ggcorr(df),其中 df 是您要调用的那个数据框。该函数的输出是一个三角形配色矩阵,标有变量名。每个变量相对于其他变量的相关系数,可以通过在矩阵中按行和/或按列读取对应单元格来获取,具体取决于该变量在矩阵中的位置。

听起来可能有点绕,但实际操作非常简单,试试下面的代码块吧!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5saWJyYXJ5KFwiR0dhbGx5XCIpIiwic2FtcGxlIjoiIyBSZXBsYWNlIHRoZSBcIi4uLi4uXCIgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZGF0YSBmcmFtZSAgXG5nZ2NvcnIoLi4uLi4pIiwic29sdXRpb24iOiIjIFJlcGxhY2UgdGhlIFwiLi4uLi5cIiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBkYXRhIGZyYW1lIFxuZ2djb3JyKG1vdmllcykifQ==

correlation coefficient

在您刚创建的相关矩阵中(顺便说一句,做得很好!),您可以找到与某个变量(如 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 参数允许您根据相关系数的强弱来调整每个标签的不透明度。这对快速的可视化分析非常有帮助。

别只听我说,亲自试试吧!

现在我们来绘制一张更好的相关矩阵:

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6Im1vdmllcyA8LSByZWFkLmNzdih1cmwoXCJodHRwOi8vczMuYW1hem9uYXdzLmNvbS8vZGN3b29kczI3MTcvbW92aWVzLmNzdlwiKSlcbm92aWVzJHByb2ZpdCA8LSBtb3ZpZXMkZ3Jvc3MgLSBtb3ZpZXMkYnVkZ2V0XG5saWJyYXJ5KFwiR0dhbGx5XCIpIiwic2FtcGxlIjoiIyBGaWxsIGluIFwiVFJVRVwiIG9yIFwiRkFMU0VcIiB0byBzZWUgaG93IHRoZSBjb3JyZWxhdGlvbiBtYXRyaXggY2hhbmdlcyBcbmdnY29ycihtb3ZpZXMsIFxuICAgICAgIGxhYmVsID0gLi4uLi4sIFxuICAgICAgIGxhYmVsX2FscGhhID0gLi4uLi4pIiwic29sdXRpb24iOiIjIEZpbGwgaW4gXCJUUlVFXCIgb3IgXCJGQUxTRVwiIHRvIHNlZSBob3cgdGhlIGNvcnJlbGF0aW9uIG1hdHJpeCBjaGFuZ2VzXG5nZ2NvcnIobW92aWVzLCBcbiAgICAgICBsYWJlbCA9IFRSVUUsIFxuICAgICAgIGxhYmVsX2FscGhhID0gVFJVRSkifQ==

correlation coefficient

在接下来的图中,您会看到当出现“强”相关时,其回归线(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 变化”图中所见的那条熟悉的线性回归直线。

总之,您将看到快速生成高质量数据可视化有多么简单!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB2b3RlcyB2cyByZXZpZXdzXG5xcGxvdChtb3ZpZXMkLi4uLi4sIFxuICAgICAgbW92aWVzJC4uLi4uLCBcbiAgICAgIGRhdGEgPSAuLi4uLiwgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIiwic29sdXRpb24iOiIjIFBsb3Qgdm90ZXMgdnMgcmV2aWV3c1xucXBsb3QobW92aWVzJHZvdGVzLCBcbiAgICAgIG1vdmllcyRyZXZpZXdzLCBcbiAgICAgIGRhdGEgPSBtb3ZpZXMsIFxuICAgICAgZ2VvbSA9IGMoXCJwb2ludFwiLCBcInNtb290aFwiKSwgXG4gICAgICBtZXRob2QgPSBcImxtXCIsIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSwgXG4gICAgICBzZSA9IEZBTFNFKSJ9

positive R correlation

您可能注意到在上面的 qplot 中包含了 alpha 参数。qplot 中的 alpha 会对散点图中的点应用不透明度梯度,这与它在 ggcorr 中改变相关系数标签不透明度的方式类似。

在当前设置下,只有当一个点被另外 5 个点重叠时才会达到完全不透明。增减 alpha 分母中的数字会影响改变一个点不透明度所需的重叠点数量。使用这种美学映射的一个原因是,它可以帮助用户快速识别图中数据点的密集区域,从而一眼之间便能获得新的洞见。

动手调整一下代码,看看效果吧!

弱相关:绘制利润随年份变化

现在我们通过绘制 profit 相对 years 的图,来看看“弱”负相关是什么样子。这次我们没有指定 method,因此趋势线将根据数据以曲线方式变化(拟合曲线),这是该函数的默认行为。您会注意到,在趋势线的某些部分,浅灰色区域的大小会随趋势线置信区间而增大或缩小。

如果您对置信区间的概念还不熟悉,不必担心!R 会帮您完成计算,练习之后我们再做更好的解释。

现在,请先填好必要的代码并观察结果!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkiLCJzb2x1dGlvbiI6IiMgUGxvdCBwcm9maXQgb3ZlciB5ZWFyc1xucXBsb3QobW92aWVzJHllYXIsIFxuICAgICAgbW92aWVzJHByb2ZpdCwgXG4gICAgICBkYXRhID0gbW92aWVzLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgYWxwaGEgPSBJKDEgLyA1KSkifQ==

weak correlation

现在您已经看到置信区间与平滑曲线的实际效果了,可以做出哪些观察?

  • 首先,在图的起始部分,profit 似乎随着 year 的增加而上升。
  • 其次,您会注意到在平滑曲线的初期,灰色区域(置信区间)较大,而数据点(或观测值)较少。
  • 第三,随着曲线进入观测值更为密集的区间,灰色区域缩小并几乎贴合曲线,而曲线在后期 year 开始下降。

总之,将置信区间与平滑曲线一起绘制,可以让我们看到与回归线相关的不确定性。观测值越少,不确定性越大;观测值越多,不确定性越小。

这对于可视化变量关系在整个数据框中的变化非常有用,也揭示了观测值的密集程度是如何改变拟合曲线的。

但需要注意的是,该图可能有些误导,因为仅从视觉上并不容易判断变量之间是正相关还是负相关。

现在,让我们用与“votes 对 reviews”相同的方式来绘制“profit 随 year 变化”的图:只需将每个参数中的“…….”替换为合适的代码,使年份绘制在 x 轴上,profit 在 y 轴上。别忘了指定 “data” 所对应的数据框!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyQuLi4uLiwgXG4gICAgICBtb3ZpZXMkLi4uLi4sIFxuICAgICAgZGF0YSA9IC4uLi4uLCBcbiAgICAgIGdlb20gPSBjKFwicG9pbnRcIiwgXCJzbW9vdGhcIiksIFxuICAgICAgbWV0aG9kID0gXCJsbVwiLCBcbiAgICAgIGFscGhhID0gSSgxIC8gNSksIFxuICAgICAgc2UgPSBGQUxTRSkiLCJzb2x1dGlvbiI6IiMgUGxvdCB0aGUgeWVhcnMgb24gdGhlIHgtYXhpcywgcHJvZml0IG9uIHRoZSB5LWF4aXNcbnFwbG90KG1vdmllcyR5ZWFyLCBcbiAgICAgIG1vdmllcyRwcm9maXQsIFxuICAgICAgZGF0YSA9IG1vdmllcywgXG4gICAgICBnZW9tID0gYyhcInBvaW50XCIsIFwic21vb3RoXCIpLCBcbiAgICAgIG1ldGhvZCA9IFwibG1cIiwgXG4gICAgICBhbHBoYSA9IEkoMSAvIDUpLCBcbiAgICAgIHNlID0gRkFMU0UpIn0=

negative correlation

回看相关矩阵,您会看到 profit 与 year 的相关系数为 -0.1,在带有最佳拟合线的图中也许比在采用拟合曲线的图中更易于观察。

融会贯通

现在我们再来看 GGally 中另一个强大的函数 ggpairs。该函数的优势在于,它能创建一个矩阵,将多个变量之间的相关系数、散点图(包含带置信区间的最佳拟合线)以及密度图组合展示。

只用这一函数,您就能把本教程所覆盖的要点有效地整合在一起,并以简明易懂的方式呈现。

在下面的代码块中,从数据框中挑选您最喜欢的三个变量(无需手动取子集!),填进去并运行!

eyJsYW5ndWFnZSI6InIiLCJwcmVfZXhlcmNpc2VfY29kZSI6ImxpYnJhcnkoXCJnZ3Bsb3QyXCIpXG5saWJyYXJ5KFwiR0dhbGx5XCIpXG5tb3ZpZXMgPC0gcmVhZC5jc3YodXJsKFwiaHR0cDovL3MzLmFtYXpvbmF3cy5jb20vL2Rjd29vZHMyNzE3L21vdmllcy5jc3ZcIikpXG5tb3ZpZXMkcHJvZml0IDwtIG1vdmllcyRncm9zcyAtIG1vdmllcyRidWRnZXRcbm9wdGlvbnMoc2NpcGVuID0gOTk5KSIsInNhbXBsZSI6IiMgUGx1ZyBpbiB5b3VyIHRocmVlIGZhdm9yaXRlIHZhcmlhYmxlcyBhbmQgdGlua2VyIGF3YXkhXG5nZ3BhaXJzKG1vdmllcywgXG4gICAgICAgIGNvbHVtbnMgPSBjKFwiLi4uLi5cIiwgXCIuLi4uLlwiLCBcIi4uLi4uXCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSIsInNvbHV0aW9uIjoiIyBQbHVnIGluIHlvdXIgdGhyZWUgZmF2b3JpdGUgdmFyaWFibGVzIGFuZCB0aW5rZXIgYXdheSFcbmdncGFpcnMobW92aWVzLCBcbiAgICAgICAgY29sdW1ucyA9IGMoXCJjYXN0X2ZhY2Vib29rX2xpa2VzXCIsIFwiYnVkZ2V0XCIsIFwicHJvZml0XCIpLCBcbiAgICAgICAgdXBwZXIgPSBsaXN0KGNvbnRpbnVvdXMgPSB3cmFwKFwiY29yXCIsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDEwKSksIFxuICAgICAgICBsb3dlciA9IGxpc3QoY29udGludW91cyA9IFwic21vb3RoXCIpKSJ9

correlation R matrix

如您所料,很多情境下都会有一种更合适的图表类型——关键在于了解可用的可视化技术、如何使用它们,以及最终结果所代表的含义!

后续进阶

本教程内容相当丰富,恭喜您坚持学到最后!

希望您能在自己的数据分析实践中用上这些概念!这些确实是 R 中数据探索的基础,您还能做更多事情,帮助在建模分析之前充分把握数据特征。不妨再进一步,开始 DataCamp 的探索性数据分析课程?

同时也欢迎您前往 Kaggle 挑选一个丰富而有趣的数据集来探索,如果您不想继续使用本教程的 movies 数据集!

主题
R